集合类型有两种不同的类型——可变集合(set)和不可变集合(frozenset)
可变集合不是可哈希的,不能用作字典的键,也不能用做其他集合中的元素
不可变集合是有哈希值的,能被用做字典的键或者是作为集合中的一个成员
1.创建集合类型和给集合赋值
>>> s = set('cheeseshop') >>> s set(['c', 'e', 'h', 'o', 'p', 's']) >>> t = frozenset('bookshop') >>> t frozenset(['b', 'h', 'k', 'o', 'p', 's']) >>> type(s) <type 'set'> >>> type(t) <type 'frozenset'> >>> len(s) 6 >>> len(t) 6 >>> s == t False
2.访问集合中的值
>>> 'k' in s False >>> 'k' in t True >>> for i in s: ... print i ... c e h o p s
3.更新集合
>>> s.add('z') >>> s set(['c', 'e', 'h', 'o', 'p', 's', 'z']) >>> s.update('abc') >>> s set(['a', 'c', 'b', 'e', 'h', 'o', 'p', 's', 'z']) >>> s.remove('z') >>> s set(['a', 'c', 'b', 'e', 'h', 'o', 'p', 's']) >>> s -= set('abc') >>> s set(['e', 'h', 'o', 'p', 's'])
不可变集合不能修改
4.删除集合中的成员和集合
>>> del t
5.集合类型操作符
<1>标准类型操作符
1.成员关系(in,not in)
2.集合等价/不等价(==,!=)
3.子集/超集(<,<=,>,>=)
<2>集合类型操作符
1.联合(|)
>>> s|t set(['b', 'e', 'h', 'k', 'o', 'p', 's'])
2.交集(&)
>>> s&t set(['h', 's', 'o', 'p'])
3.差补/相对补集(-)
>>> s-t set(['e'])
4.对称差分(^),即(XOR)异或,只能是属于集合s或者集合t的成员,不能同时属于两个集合
>>> s^t set(['b', 'e', 'k'])
5.混合集合类型操作
类型不相同的时候,产生的结果类型和左操作数的类型相同
<3>集合类型操作符(仅适用于可变集合)
1.update()方法或者|=
>>> s|=t >>> s set(['b', 'e', 'h', 'k', 'o', 'p', 's'])
2.intersection_update()方法或者&=,保留两个集合重复的成员
>>> s set(['a', 'c', 'b', 'd']) >>> t set(['e', 'd', 'f']) >>> s&=t >>> s set(['d'])
3.difference_update()方法或者-=
4.symmetric_difference_update()方法或者^=,差分操作
6.内建函数
<1>标准类型函数——len()
<2>集合类型工厂函数——set()和frozenset()
7.集合类型内建方法——P184