[Python-ideas] set.add() return value

Ralf W. Grosse-Kunstleve rwgk at yahoo.com
Thu Feb 12 23:19:03 CET 2009


Has this come up before?
Python 2.6.1 behavior:
>>> s = set()
>>> print s.add(1)
None
>>> print s.add(1)
None
>>>
Desired behavior:
>>> s = set()
>>> print s.add(1)
True
>>> print s.add(1)
False
>>>
Motivation:
Instead of
 if (1 not in s): # O(N log N) lookup
 s.add(1) # O(N log N) lookup again
 do_something_else()
or
 prev_len = len(s)
 s.add(1) # O(N log N) lookup
 if (len(s) != prev_len):
 do_something_else()
one could write
 if (s.add(1)):
 do_something_else()
which would be as fast as the second form and the most concise of all alternatives.


More information about the Python-ideas mailing list

AltStyle によって変換されたページ (->オリジナル) /