Here some ideas that have been proposed for sets:
* New method (proposed by Shane Holloway): s1.isdisjoint(s2). Logically
equivalent to "not s1.intersection(s2)" but has an early-out if a common member
is found. The speed-up is potentially large given two big sets that may
largely overlap or may not intersect at all. There is also a memory savings
since a new set does not have to be formed and then thrown away.
* Additional optional arguments for basic set operations to allow chained
operations. For example, s=s1.union(s2, s3, s4) would be logically equivalent
to s=s1.union(s2).union(s3).union(s4) but would run faster because no
intermediate sets are created, copied, and discarded. It would run as if
written: s=s1.copy(); s.update(s2); s.update(s3); s.update(s4).
* Make sets listenable for changes (proposed by Jason Wells):
s = set(mydata)
def callback(s):
print 'Set %d now has %d items' % (id(s), len(s))
s.listeners.append(callback)
s.add(existing_element) # no callback
s.add(new_element) # callback
Raymond
_______________________________________________
Python-Dev mailing list
[email protected]
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe:
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com