先简单说一下set
t.add('x') # 添加一项
s.update([10,37,42]) # 在s中添加多项
t.remove('H') # 删除一项
len(s) # set 的长度
x in s # 测试 x 是否是 s 的成员
x not in s # 测试 x 是否不是 s 的成员
s.issubset(t)
s <= t # 测试是否 s 中的每一个元素都在 t 中
s.issuperset(t)
s >= t # 测试是否 t 中的每一个元素都在 s 中
s.union(t)
s | t # 返回一个新的 set 包含 s 和 t 中的每一个元素
s.intersection(t)
s & t # 返回一个新的 set 包含 s 和 t 中的公共元素
s.difference(t)
s - t # 返回一个新的 set 包含 s 中有但是 t 中没有的元素
s.symmetric_difference(t)
s ^ t # 返回一个新的 set 包含 s 和 t 中不重复的元素
s.copy() # 返回 set “s”的一个浅复制
set(可变集合)与frozenset(不可变集合)的区别:
set无序排序且不重复,是可变的,有add(),remove()等方法。既然是可变的,所以它不存在哈希值。基本功能包括关系测试和消除重复元素. 集合对象还支持union(联合), intersection(交集), difference(差集)和sysmmetric difference(对称差集)等数学运算.
sets 支持 x in set, len(set),和 for x in set。作为一个无序的集合,sets不记录元素位置或者插入点。因此,sets不支持 indexing, 或其它类序列的操作。
frozenset是冻结的集合,它是不可变的,存在哈希值,好处是它可以作为字典的key,也可以作为其它集合的元素。缺点是一旦创建便不能更改,没有add,remove方法。