集合
1.1集合基础知识
集合是无序可变序列,使用一对大括号作为界定符,元素之间使用逗号分隔,同一个集合的每个元素都是唯一的,元素之间不允许重复。
在python中,直接将集合赋值给变量即可创建一个集合对象。
>>> a={3,5}
>>> a
{3, 5}
>>> type(a)
<class 'set'>
也可以使用set()函数将列表、元组等其他可迭代对象转换为集合,如果原来的数据中存在重复元素,则在转换为集合的时候保留一个。
>>> a_set=set(range(8,14)) #把range对象转换为集合
>>> a_set
{8, 9, 10, 11, 12, 13}
>>> b_set=set([0,1,2,3,0,1,2,3,7,8]) #转换时自动去掉重复元素
>>> b_set
{0, 1, 2, 3, 7, 8}
注意:集合只能包含数字、字符串、元组等不可变类型(或者说可哈希)的数据,而不能包含列表、字典、集合等可变类型的数据。
1.2集合操作与运算
1.集合元素增加与删除
使用集合对象的add()方法可以为其增加新元素,如果该元素已存在与集合则忽略该操作;update()方法用于合并另外一个集合的元素到当前集合中。例如:
>>> s={1,2,3}
>>> s.add(3) #增加元素,重复元素自动忽略
>>> s
{1, 2, 3}
>>> s.update({3,4}) #更新当前集合,自动忽略重复的元素
>>> s
{1, 2, 3, 4}
集合对象的pop()方法用于随机删除并返回集合中的一个元素,如果集合为空则抛出异常;remove()方法用于删除集合中的元素,如果指定元素不存在则抛出异常;dicard()用于从集合中删除一个特定元素,如果元素不在集合中则忽略该操作;clear()方法清空集合删除所有元素。例如:
>>> s.discard(5) #删除元素,不存在则忽略该操作
>>> s
{1, 2, 3, 4}
>>> s.remove(5) #删除元素,不存在就抛出异常
Traceback (most recent call last):
File "<pyshell#12>", line 1, in <module>
s.remove(5)
KeyError: 5
>>> s.pop() #删除并返回一个元素
1
2.集合运算
Python集合支持交集、并集、差集等运算,例如:
>>> a_set=set([8,9,10,11,12,13])
>>> b_set={0,1,2,3,7,8}
>>> a_set | b_set #并集
{0, 1, 2, 3, 7, 8, 9, 10, 11, 12, 13}
>>> a_set&b_set #交集
{8}
>>> a_set-b_set #差集
{9, 10, 11, 12, 13}
>>> a_set^b_set #对称差集
{0, 1, 2, 3, 7, 9, 10, 11, 12, 13}
>>> x={1,2,3}
>>> y={1,2,5}
>>> z={1,2,3,4}
>>> x<y #比较集合大小
False
>>> x<z
True
>>> y<z
False
>>> x.issubset(y) #测试是否为子集
False
>>> x.issubset(z)
True
注意:关系运算符>、>=、<、<=作用于集合时表示集合之间的包含关系,而不是集合中元素的大小关系。例如,两个集合A和B,如果A<B不成立,不代表A>B就一定成立。