集合类型操作符(所有的集合类型)
联合( | )
联合(union)操作和集合的OR(又称可兼析取(inclusive
disjunction))其实是等价的,两个集
合的联合是一个新集合,该集合中的每个元素都至少是其中一个集合的成员,即,属于两个集合其
中
之一的成员。联合符号有一个等价的方法,union().
Edit By Vheavens
Edit By Vheavens
>>>
s | t
set(['c', 'b', 'e', 'h', 'k', 'o', 'p', 's'])
交集( & )
你
可以把交集操作比做集合的AND(或合取)操作。两个集合的交集是一个新集合,该集合中的每
个元素同时是两个集合中的成员,即,属于两个集合的成
员。交集符号有一个等价的方法,
intersection().
>>> s & t
set(['h',
's', 'o', 'p']
差补/相对补集( � )
两个集合(s
和t)的差补或相对补集是指一个集合C,该集合中的元素,只属于集合s,而不属
于集合t。差符号有一个等价的方法,difference().
>>>
s - t
set(['c', 'e'])
对称差分( ^ )
和其他的布尔集合操作相似,对称差分是集合的XOR(又称"异
或" (exclusive disjunction)).
两个集合(s
和t)的对称差分是指另外一个集合C,该集合中的元素,只能是属于集合s 或者集合t
的成员,不能同时属于两个集合。对称差分有一个等价的方
法,symmetric_difference().
>>> s ^ t
set(['k', 'b', 'e',
'c'])
混合集合类型操作
上面的示例中,左边的s 是可变集合,而右边的t 是一个不可变集合. 注意上面使用集合操作
运算符
所产生的仍然是可变集合,但是如果左右操作数的顺序反过来,结果就不一样了:
>>> t | s
frozenset(['c',
'b', 'e', 'h', 'k', 'o', 'p', 's'])
>>> t ^ s
frozenset(['c',
'b', 'e', 'k'])
>>> t - s frozenset(['k', 'b'])
如果左右两个操作
数的类型相同,既都是可变集合或不可变集合, 则所产生的结果类型是相同
的,但如果左右两个操作数的类型不相同(左操作数是set,右操作数是
frozenset,或相反情况),
Edit By Vheavens
Edit By Vheavens
则所产生的结果类型与左
操作数的类型相同,上例中可以证明这一点。还要注意,加号不是集合类
型的运算符:
>>> v = s + t
Traceback
(most recent call last):
File "<stdin>", line 1, in ?
TypeError:
unsupported operand type(s) for +: 'set' and 'set