1、集合基本知识
集合是无序可变序列,同一个集合中的元素都是唯一的,不允许重复
>>> a = {1,2,'a'} #直接赋值
>>> a
set(['a', 1, 2])
>>> a = {1,2,3}
>>> a
set([1, 2, 3])
>>>
>>> a= set(range(5)) #将range转化为集合
>>> a
set([0, 1, 2, 3, 4])
>>> a = set([1,2,2,1]) #将列表转化为集合
>>> a
set([1, 2]) #集合会自动去重,保证元素的唯一性
>>>
注意:集合中只能包含数字、字符串、元组等不可变类型的数据(或者说是可哈希的数据),而不能包含列表、字典、集合等可变类型的数据,同时,集合的in操作效率比列表快很多,因为字典和列表都是通过哈希值来存储的
>>> a = {1,'a','-',[1,2,3]} #集合中有列表元素会报错
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
>>>
2、集合元素的增加与删除
使用集合的add()方法可以为集合增加新的元素,使用update()方法可以合并另一个集合中的元素到当前集合中
>>> a = {1,2,3}
>>> a.add(4)
>>> a
set([1, 2, 3, 4])
>>> a.update({6,7,8})
>>> a
set([1, 2, 3, 4, 6, 7, 8])
>>>
pop()方法用于随机删除并返回集合中的一个元素,如果集合为空则抛出异常;
remove()方法用于删除集合中的元素,如果指定元素不存在则抛出异常;
discard()方法用于从集合中删除一个特定元素,如果元素不存在则忽略该操作;
clear()方法用于清空集合中的所有元素
>>> a = {1,2,3,'A'}
>>> a.discard(4) #删除元素,不存在则忽略
>>> a
set(['A', 1, 2, 3])
>>> a.remove(4) #删除元素,不存在则抛出异常
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 4
>>> a.remove(3) #删除元素
>>> a
set(['A', 1, 2])
>>> a.pop() #随机删除并返回一个元素
'A'
>>> a
set([1, 2])
>>>
3、集合的运算
集合支持交集、并集、差集等运算
>>> a_set = {1,2,3,4}
>>> b_set = {3,4,5,6}
>>> a_set|b_set #并集
set([1, 2, 3, 4, 5, 6])
>>> a_set.union(b_set) #并集
set([1, 2, 3, 4, 5, 6])
>>> a_set & b_set #交集
set([3, 4])
>>> a_set.intersection(b_set) #交集
set([3, 4])
>>> a_set - b_set #差集
set([1, 2])
>>> a_set.difference(b_set) #差集
set([1, 2])
>>> new_set = a_set|b_set
>>> new_set
set([1, 2, 3, 4, 5, 6])
>>> a_set.issubset(new_set) #判断是否为子集关系
True
>>>