Alan Gauld wrote:
> "Chris Calloway" <[EMAIL PROTECTED]> wrote 
> 
>>>>> dbs = set(['oracle','mysql','postgres','infomix','access'])
>>>>> mine = set(['oracle','mysql','bdb'])
>>>>> dbs & mine
>> set(['oracle', 'mysql'])
>>>>> dbs - mine
>> set(['access', 'infomix', 'postgres'])
> 
> Interesting. I didn't know about the & and - set operations.
> Thanks for the pointer.

They just invoke special methods, of course:

s.issubset(t)                     s <= t   __le__
s.issuperset(t)                   s >= t   __ge__
s.union(t)                        s | t    __or__
s.intersection(t)                 s & t    __and__
s.difference(t)                   s - t    __sub__
s.symmetric_difference(t)         s ^ t    __xor__
s.update(t)                       s |= t   __ior__
s.intersection_update(t)          s &= t   __iand__
s.difference_update(t)            s -= t   __isub__
s.symmetric_difference_update(t)  s ^= t   __ixor__

Good times!

The advantage of the s.method(t) versions are, in Python 2.3.1 and
after, they will accept any, cough, iterable as argument t, whereas the
operator versions require set objects on both side of the operator:

 >>> set(xrange(10)).issubset(xrange(20))
True
 >>>

-- 
Sincerely,

Chris Calloway
http://www.seacoos.org
office: 332 Chapman Hall   phone: (919) 962-4323
mail: Campus Box #3300, UNC-CH, Chapel Hill, NC 27599



_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to