7.6 集合类型
集合对象是一组无序排列的可哈希的值。集合成员可以做字典中的键。
集合支持in和not in操作符检查成员,由len()内建函数得到集合的基数,用for循环迭代集合的成员。但因为集合本身是无序的,所以不可以为集合创建索引或执行切片操作,也没有键可用来获取集合中元素的值。
集合有两种不同的类型,可变集合(set)和不可变集合(frozenset)。对可变集合可以添加和删除元素,对不可变集合不允许这样做。
7.6.1 如何创建集合类型和给集合赋值
集合被创建的唯一方法——用集合的工厂方法set()和frozenset()。
>>> s = set("1234567890")
>>> s
set(['1', '0', '3', '2', '5', '4', '7', '6', '9', '8'])
>>> frozenset(("1",2,3))
frozenset(['1', 2, 3])
>>>
7.6.2 如何访问集合中的值
可以遍历查看集合成员或检查某项元素是否是一个集合中的成员。
>>> 2 in s
False
>>> "2" in s
True
>>> for item in s:
... print item
...
1
0
3
>>>
7.6.3 如何更新集合
用各种集合内建的方法和操作符添加和删除集合的成员。
add() update() remove() -= +=
只有可变集合能被修改。试图修改不可变集合会引发异常。
>>> s.add("1111")
>>> s
set(['1111', '1', '0', '3', '2', '5', '4', '7', '6', '9', '8'])
>>> s.update((1,2,3))
>>> s
set(['1111', 2, 3, 1, '1', '0', '3', '2', '5', '4', '7', '6', '9', '8'])
>>> s.remove(1)
>>> s
set(['1111', 2, 3, '1', '0', '3', '2', '5', '4', '7', '6', '9', '8'])
>>> s -= set("123")
>>> s
set(['1111', 2, 3, '0', '5', '4', '7', '6', '9', '8'])
>>>
7.6.4 如何删除集合中的成员和集合
del
7.7 集合类型操作符
7.7.1 标准类型操作符
1. 成员关系(in, not in)
2. 集合等价/不等价
== !=
3. 子集/超集
> >= < <=
7.7.2 集合类型操作符
1.联合(|)
2. 交集(&)
3. 差补/先对补差(-)
4. 对称查分(^)