1 集合(set)的定义
1.1 集合是一个无序且不重复元素的序列:
1)无序:存储顺序和添加的顺序不一定相同,不支持索引、切片
2)元素不重复:当添加重复元素时,集合会自动去重。因此set常用来消除重复元素
1.2 创建方式
可以通过大括号{} 或者 set()函数创建,
注:创建空集合时必须用set函数创建,因为{}是用来创建一个空的字典
set1 = {1, 2, 3, 2}
print(type(set1), set1) # <class 'set'> {1, 2, 3} 自动消除重复元素set2 = set([1, 4, 'henry', 'tom'])
print(type(set2)) # <class 'set'># 创建空集合必须用set函数
set3 = {}
print(type(set3)) # <class 'dict'>
set4 = set([])
print(type(set4)) # <class 'set'>
2 集合运算(针对于两个集合之间)
差集:-
并集:|
交集:&
不同时包含:^
a = set('abcdef')
b = set('abc123')
set1 = a - b # 差集,在a中不在b中
print(set1) # {'e', 'f', 'd'}set2 = a | b # 并集
print(set2) # {'e', 'f', '1', '2', '3', 'c', 'd', 'b', 'a'}set3 = a & b # 交集
print(set3) # {'c', 'b', 'a'}set4 = a ^ b # 不同时存在于a和b中的元素,即:a与b的并集 减去 a与b的交集
print(set4) # {'2', '3', 'f', '1', 'e', 'd'}
3 集合的操作
1)添加元素:
add:添加单个元素
update:添加多个元素
remove:删除元素,元素不存在会报错
discard:删除元素,元素不存在不会报错
pop():随机删除一个元素
in : 判断元素是否在集合内
set1.issubset(set2): 为True时说明–set1的超集为set2
超集:父集、被包含的意思
set11 = {1, 2, 3, 'a', 'b', 'c'}
set22 = {'a', 'b'}
set11.add('tom') # 增加一个元素
print(set11) # {1, 2, 3, 'a', 'b', 'c', 'tom'}set11.remove(2)
print(set11) # {1, 3, 'a', 'b', 'c', 'tom'}# set11.remove('henry') # 集合中没有此元素,用remove会报错
set11.discard('henry') # 集合中没有此元素,用discard不会报错x = set11.pop() # 随机删除一个元素
print(set11)set11.update(([10, 11, 12]))
print(set11) # {3, 'a', 'c', 'tom', 10, 11, 12, 'b'}print('tom' in set11) # True
print('henry' in set11) # Falseprint(set22.issubset(set11)) # true; 超集,set22的超集是set11,即 set11包含了set22