python 的 set 和其他語言類似,是一個無序不重復元素集,基本功能包括關系測試和消除重復元素。
集合對象還支持 union(聯合),intersection(交),difference(差) 和 sysmmetric difference(對稱差集) 等數學運算。
set 支持 x in set
, len(set)
和 for x in set
。
作為一個無序的集合,set 不記錄元素位置或者插入點。因此,set 不支持 indexing,slicing,或其它類序列(sequence-like)的操作。
>>> set('abcd')
{'a', 'd', 'b', 'c'}
>>> set([1, 2, 3, 4])
{1, 2, 3, 4}
去除 list 中重復的元素:
>>> set([1, 2, 3, 1])
{1, 2, 3}
集合運算:
# 定義兩個 set
>>> a = set([1, 2, 3, 4])
>>> b = set([3, 4, 5, 6])
交集:
>>> a & b
{3, 4}
# 等價于
>>> a.intersection(b)
{3, 4}
并集:
>>> a | b
{1, 2, 3, 4, 5, 6}
# 等價于:
>>> a.union(b)
{1, 2, 3, 4, 5, 6}
差集:
>>> a - b # 去掉 a 中 a,b 共有的元素
{1, 2}
>>> b - a # 去掉 b 中 a,b 共有的元素
{5, 6}
# 等價于:
>>> a.difference(b)
{1, 2}
>>> b.difference(a)
{5, 6}
對稱差集:
>>> a ^ b # 出現在 a 或 b 中,但不為 a,b 共有的元素
{1, 2, 5, 6}
# 等價于:
>>> a.symmetric_difference(b)
{1, 2, 5, 6}
檢查子集:
>>> c = set([1, 2])
# 檢查 c 中每一個元素是否都在 a 中
>>> c.issubset(a)
True
# 檢查 c 中每一個元素是否都在 b 中
>>> c.issubset(b)
False
# 等價于
>>> c <= a
True
>>> c <= b
False
# 檢查 c 中每一個元素是否都在 a 中
>>> a.issuperset(c)
True
檢查 c 中每一個元素是否都在 b 中
>>> b.issuperset(c)
False
# 等價于
>>> a >= c
True
>>> b >= c
False