python基础第十章:集合

时间:2022-09-08 11:08:34

集合

集合特色:无序,去重

声明一个空集合

变量=set()

声明带有数据的集合

变量=set{值,值,值……}

集合没有增删改查基本操作

集合遍历(只能用  for……in)

set1={'孙','志','成','周','梦','迪'}
for i in set1:
print(i)

集合推导式(与列表一样)
基本推导式
变量={变量 for 变量 in 容器}
res ={i for i in range(5)}
print(res)

带有条件的推导式
变量 = {变量 for 变量 in 容器 条件表达式}
res ={i for i in range(5) if i%2==0}
print(res)

多循环的推导式
变量={变量1和变量2的操作 for 变量1 in 容器 for 变量2 in 容器}
res ={i+j for i in range(5) for j in range(4) }
print(res)

带有条件的多循环的推导式
变量={变量1和变量2的操作 for 变量1 in 容器 for 变量2 in 容器 条件表达式}
res={i+j for i in range(5) for j in range(4) if i%2==0 and j%2==0}print(res)
集合的常用函数
max() min() len() set()
集合的专用函数
add()/update:向集合添加一个元素
pop():随机删除一个数据
remove():删除指定的数据,如果数据不存在,就会报错
discard():删除指定的数据,如果数据不存在,不会报错,会将原来的集合原样输出
clear():清空集合中的数据
copy():复制集合

集合运算符
交集:&
set1={1,2,3,4,5}
set2={2,3,4,7,8,9}
res=set1&set2
print(res)

并集:|
set1={1,2,3,4,5}
set2={2,3,4,7,8,9}
res=set1|set2
print(res)

差集:-
set1={1,2,3,4,5}
set2={2,3,4,7,8,9}
res=set1-set2
print(res)

对称差集:^
set1={1,2,3,4,5}
set2={2,3,4,7,8,9}
res=set1^set2
print(res)

超集:issuperset()
子集:issubset()
不相交;isdisjoint()

集合运算函数: (“更新”的没有返回值)
差集:difference()
set1={1,2,3,4,5}
set2={2,3,4,7,8,9}
res=set1.difference(set2)
print(res) #{1, 5}
print(set1) #{1, 2, 3, 4, 5}

更新差集:difference_update() (会将原来的集合改变)
set1={1,2,3,4,5}
set2={2,3,4,7,8,9}
res=set1.difference_update(set2)
print(res) #None
print(set1) #{1, 5}

交集:intersection()
set1={1,2,3,4,5}
set2={2,3,4,7,8,9}
res=set1.intersection(set2)
print(res)
print(set1)

更新交集:intersection_update()(会将原来的集合改变)
set1={1,2,3,4,5}
set2={2,3,4,7,8,9}
res=set1.intersection_update(set2)
print(set1)

并集:union()
set1={1,2,3,4,5}
set2={2,3,4,7,8,9}
res=set1.union(set2)
print(res)
print(set1)

更新并集:update()(会将原来的集合改变)
set1={1,2,3,4,5}
set2={2,3,4,7,8,9}
res=set1.update(set2)
print(set1)

对称差集:symmetric_difference()
set1={1,2,3,4,5}
set2={2,3,4,7,8,9}
res=set1.symmetric_difference(set2)
print(res)
print(set1)

更新对称差集:symmetric_differnence_update()
(会将原来的集合改变)
set1={1,2,3,4,5}
set2={2,3,4,7,8,9}
res=set1.symmetric_difference_update(set2)
print(set1)
检查是否是超集:issuperset()
set1={1,2,3,4,5,6,7}
set2={2,3,4}
res=set1.issuperset(set2)
print(res) #True

检查是否是子集:issubset()
set1={1,2,3,4,5,6,7}
set2={2,3,4}
res=set2.issubset(set1)
print(res)

检查是否不相交:isdisjoint()
set1={1,2,3,4,5,6,7}
set2={2,3,4}
res=set2.isdisjoint(set1)
print(res) #False