Python集合操作方法详解
集合是无序的,天生不重复的数据组合,它的作用如下:
- 去重,即:把一个列表变成集合,就去重了
- 关系测试,即:测试两组集合的交集、并集和差集等
一、集合常用方法总结
二、定义
1、语法
>>>name_1=[1,2,3,4,7,8,7,10] #把列表转换为集合 >>>name_1=set(name_1) #转换后,去重 >>>print(name_1,type(name_1)) {1,2,3,4,7,8,10}
三、关系测试
1、交集(intersection())
>>>name_1=[1,2,3,4,7,8,7,10] >>>name_2=[1,3,5,8,10] >>>name_1=set(name_1) >>>name_2=set(name_2) #输出结果 >>>name_1.intersection(name_2) {8,1,10,3}
2、并集(union())
>>>name_1=[1,2,3,4,7,8,7,10] >>>name_2=[1,3,5,8,10] >>>name_1=set(name_1) >>>name_2=set(name_2) #输出结果 >>>name_1.union(name_2) {1,2,3,4,5,7,8,10}
3、差集(difference())
>>>name_1=[1,2,3,4,7,8,7,10] >>>name_2=[1,3,5,8,10] >>>name_1=set(name_1) >>>name_2=set(name_2) #输出结果 >>>name_1.difference(name_2) {2,4,7}
特别提示:差集取的是数值在第一个集合中,但是不在第二个集合中(在我不在你)
4、issubset()
判断一个集合是否是另一个集合的子集
>>>name_1=[1,2,3,4,7,8,7,10] >>>name_3=[1,2,3,4] >>>name_1=set(name_1) >>>name_3=set(name_3) #输出结果 >>>name_3.issubset(name_1) True
5、issuperset()
判断一个集合是否是另一个集合的父集
>>>name_1=[1,2,3,4,7,8,7,10] >>>name_3=[1,2,3,4] >>>name_1=set(name_1) >>>name_3=set(name_3) #输出结果 >>>name_1.issuperset(name_3) True
6、对称差集(symmetric_difference())
把两个集合没有交集的数值取出来
>>>name_1=[1,2,3,4,7,8,7,10] >>>name_2=[1,3,5,8,10] >>>name_1=set(name_1) >>>name_2=set(name_2) #输出结果 >>>name_1.symmetric_difference(name_2) {2,4,5,7}
7、isdisjoint()
判断两个集合是否有交集,没有交集,则返回True
>>>name_1=[1,2,3,4,7,8,7,10] >>>name_2=[1,3,5,8,10] >>>name_3=[11] >>>name_1=set(name_1) >>>name_2=set(name_2) >>>name_3=set(name_3) #有交集 >>>name_1.isdisjoint(name_2) False #无交集 >>>name_1.isdisjoint(name_3) True
四、关系测试(特殊符号)
1、交集(&)
>>>name_1=[1,2,3,4,7,8,7,10] >>>name_2=[1,3,5,8,10] >>>name_1=set(name_1) >>>name_2=set(name_2) #结果输出 >>>name_1&name_2 {8,1,10,3}
2、并集(|)
>>>name_1=[1,2,3,4,7,8,7,10] >>>name_2=[1,3,5,8,10] >>>name_1=set(name_1) >>>name_2=set(name_2) #结果输出 >>>name_1|name_2 {1,2,3,4,5,7,8,10}
3、差集(-)
>>>name_1=[1,2,3,4,7,8,7,10] >>>name_2=[1,3,5,8,10] >>>name_1=set(name_1) >>>name_2=set(name_2) #结果输出 >>>name_1-name_2 {2,4,7}
4、对称差集(^)
>>>name_1=[1,2,3,4,7,8,7,10] >>>name_2=[1,3,5,8,10] >>>name_1=set(name_1) >>>name_2=set(name_2) #输出 >>>name_1^name_2 {2,4,5,7}
5、是否是子集(<=)
>>>name_1=[1,2,3,4,7,8,10] >>>name_3=[1,2,3,4] >>>name_1=set(name_1) >>>name_3=set(name_3) #输出 >>>name_3<=name_1 True
6、是否是父集(>=)
>>>name_1=[1,2,3,4,7,8,10] >>>name_3=[1,2,3,4] >>>name_1=set(name_1) >>>name_3=set(name_3) #输出 >>>name_1>=name_3 True
五、基本操作
1、添加(add())
>>>name_2=[1,3,5,8,10] >>>name_2=set(name_2) #添加已存在,不报错 >>>name_2.add(1) >>>name_2 {8,1,10,3,5} #添加不存在,添加一个新的数值 >>>name_2.add(11) >>>name_2 {1,3,5,8,10,11}
2、添加多项(update())
>>>name_2=[1,3,5,8,10] >>>name_2=set(name_2) >>>name_2.update([12,13,14]) #输出结果 >>>name_2 {1,3,5,8,10,12,13,14}
3、删除(remove(),pop(),discard())
①remove()
>>>name_2=[1,3,5,8,10] >>>name_2=set(name_2) >>>name_2 {8,1,10,3,5} >>>name_2.remove(1) #输出 >>>name_2 {8,10,3,5} #删除不存在的元素,会报错 >>>name_2.remove(1) Traceback(mostrecentcalllast): File"",line1,inKeyError:1
特别提示:用remove删除时,当元素不存在,会报错
②pop()
>>>name_2=[1,3,5,8,10] >>>name_2=set(name_2) >>>name_2 {8,1,10,3,5} #输出 >>>name_2.pop() 8
特别提示:pop是随机删除集合中的某个元素,并且打印
③discard()
>>>name_2=[1,3,5,8,10] >>>name_2=set(name_2) >>>name_2.discard(10) #输出结果 >>>name_2 {8,1,3,5} #删除不存在元素,不报错 >>>name_2.discard(10)
特别提示:用discard删除不存在的元素,不会出现报错
4、长度(len())
>>>name_1=[1,2,3,4,7,8,7,10] >>>name_1=set(name_1) #结果输出 >>>len(name_1) 7
5、x in s
测试x是否是s的成员
>>>name_1=[1,2,3,4,7,8,7,10] >>>name_1=set(name_1) #结果输出 >>>1inname_1 True
6、x not in s
测试x是否不是s的成员
>>>name_1=[1,2,3,4,7,8,7,10] >>>name_1=set(name_1) #输出 >>>12notinname_1 True
更多关于Python集合操作方法可查看下面的相关链接
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。