集合是无序、不重复的数据组合。
python中用set数据类型表示可变集合,常用于去除序列元素中重复单元,以及进行相应的集合操作。
>>> A = {1, 2, 3}
>>> A.add(4) # 集合添加元素, 必须为可hash对象
>>> A
{1, 2, 3, 4}
>>> A.update('a') # 添加元素,必须为可iterable对象
>>> A
>>> {1, 2, 3, 4, 'a'}
>>> A.remove('a') # 删除指定集合元素,若不存在会报错
>>> A
{1, 2, 3, 4}
>>> A.discard('a') # 删除指定集合元素,若不存在不会报错,没有返回值
>>> A.pop() # 随机删除,有返回值
5 # 返回随机删除的值
>>> B = {3, 4, 5, 6}
>>> A & B # 交集
{3, 4}
>>> A.intersection(B) # 交集,同&,B.intersection(A)亦然
{3, 4}
>>> A - B # 差集,A中有而B中没有的元素。 B - A为B中有而A中没有的元素
{1, 2}
>>> A.difference(B)
{1, 2} # 差集
>>> A | B
{1, 2, 3, 4, 5, 6} # 并集,A、B中不同元素的集合
>>> A.union(B) # 并集, 同
{1, 2, 3, 4, 5, 6}
>>> A ^ B # 异或集,不同时属于A、B的元素组成的集合。B^A亦然
{1, 2, 5, 6}
>>> A.symmetric_difference(B) # 补集,同^
{1, 2, 5, 6}
>>> 3 in A # 元素是否在集合中
True
>>> {3, 4} < A # 子集判断
True
>>> {3, 4}.issubset(A) # 子集判断,同<
True
>>> A > {3, 4} # 超集判断
True
>>> A.issuperset({3,4}) # 超集判断,同>
True
此外在python还提供了frozenset数据类型,其为不变集合(被冻结的集合)。其没有add、update、remove等改变原集合元素的操作;但支持进行集合布尔操作,生成新的集合。