集合set
集合是可变数据类型,集合内的元素必须是不可变数据类型;集合是无序的并且集合内的元素必须是不重复的。
增:
add—向集合内添加数据
set1 = set() #创建一个空的集合
set1.add('nero') #向集合内添加数据
update—向集合内迭代添加数据
set1 = set()
set1.update('abc') #向集合内迭代添加数据
>>>{'a', 'b', 'c'}
删:
pop—随机删除集合内的一个数据
set1 = {'c5',22,53,'a',44,'b','nero'}
set1.pop() #随机删除集合内的一个数据
>>>{'c5', 53, 22, 'b', 'a', 'nero'}
remove—删除指定数据,如该数据不存在则报错
set1 = {'c5',22,53,'a',44,'b','nero'}
set1.remove('nero') #删除指定数据,如该数据不存在则报错
>>>{'a', 44, 53, 'c5', 22, 'b'}
clear—清空集合
set1 = {'c5',22,53,'a',44,'b','nero'}
set1.clear() #清空集合
>>>set()
del—删除整个集合
del set1 #删除整个集合
>>>NameError: name 'set1' is not defined
查:
查询集合内的数据,只能使用for循环
交集(&或intersection)
set1 = {'c5',22,53,'a',44,'b','nero'}
set2 = {5,22,53,8,'c5',10,'d3','jason'}
set3 = {53,'c5',99,57}
print(set1 & set2 & set3) #返回多个集合之间相同的数据
>>>{'c5', 53}
print(set1.intersection(set2.intersection(set3))) #等同于&
>>>{'c5', 53}
并集(|或union)
set1 = {'c5',22,53,'a',44,'b','nero'}
set2 = {5,22,53,8,'c5',10,'d3','jason'}
set3 = {53,'c5',99,57}
print(set1 | set2 | set3) #将多个集合合并,除去重复数据
>>>{'nero', 'jason', 99, 'd3', 5, 8, 10, 44, 'c5', 53, 'a', 22, 'b', 57}
print(set1.union(set2.union(set3))) #等同于|
>>>{'b', 'nero', 5, 8, 10, 22, 'c5', 99, 'jason', 44, 'a', 53, 'd3', 57}
反交集(^或symmetric_difference)
set1 = {'c5',22,53,'a',44,'b','nero'}
set2 = {5,22,53,8,'c5',10,'d3','jason'}
print(set1 ^ set2) #去除两个集合内都有的数据后,进行合并,多次反交集运算应注意运算规则,如三个集合反交集,set3内与set1、set2都有的数据还会加入到最终的结果中
print(set1.symmetric_difference(set2)) #等同于 ^
>>>{5, 'jason', 8, 10, 'd3', 44, 'b', 'a', 'nero'}
差集
set1 = {'c5',22,53,'a',44,'b','nero'}
set2 = {5,22,53,8,'c5',10,'d3','jason'}
print(set1 - set2) # == set1-(两个集合都有的数据),set1并不会与set2的数据合并
>>>{'b', 'nero', 44, 'a'}
子集与超集
#子集
set1 = {'c5',22,53}
set2 = {5,22,53,8,'c5',10,'d3','jason'}
print(set1 < set2) #判断set1是否为set2的子集,也就是判断set2中是否包含了set1所有的数据,返回布尔值
>>>True
print(set1.issubset(set2)) #等同于 <
#超集
print(set2 > set1) #判断set2是否为set1的超集,返回布尔值
>>>True
print(set2.issuperset(set1)) #等同于 >
不可变集合
set4 = frozenset('hello nero') #创建名为set4的不可变集合,并迭代添加数据到集合内,去重
print(set4)
>>>frozenset({'o', 'e', 'l', ' ', 'r', 'h', 'n'})
lis1 = [0,1,1,1,0,2,3,3,4,4,5,5,6,6,8,8]
set4 = frozenset(lis1) #将列表转换成不可变集合set4
lis = list(set4) #再将不可变集合转换成列表,这个列表已经去除了重复数据
print(set4)
>>>frozenset({0, 1, 2, 3, 4, 5, 6, 8})
print(lis)
>>>[0, 1, 2, 3, 4, 5, 6, 8]
枚举
lis1 = [1,2,3,4]
for index,vlaue in enumerate(lis1): #enumerate同时返回元素的索引和元素,可设置索引,默认位置是0
print(index,vlaue)
>>>
0 1
1 2
2 3
3 4
for index,vlaue in enumerate('hello nero',1):
print(index,vlaue)
>>>
1 h
2 e
3 l
4 l
5 o
6
7 n
8 e
9 r
10 o