Why this apparent assymetry in set operations?

skip at pobox.com skip at pobox.com
Tue Jan 15 10:10:38 EST 2008


I've noticed that I can update() a set with a list but I can't extend a set
with a list using the |= assignment operator.

    >>> s = set()
    >>> s.update([1,2,3])
    >>> s
    set([1, 2, 3])
    >>> s |= [4,5,6]
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: unsupported operand type(s) for |=: 'set' and 'list'
    >>> s |= set([4,5,6])
    >>> s
    set([1, 2, 3, 4, 5, 6])

Why is that?  Doesn't the |= operator essentially map to an update() call?

Skip




More information about the Python-list mailing list