Python基础【day03】:集合入门(三)
本节内容
1、集合常用方法总结
2、定义
3、关系测试
集合是无序的,天生不重复的数据组合,它的作用如下:
- 去重,即:把一个列表变成集合,就去重了
- 关系测试,即:测试两组集合的交集、并集和差集等
一、集合常用方法总结
二、定义
1、语法
1 2 3 4 5 6 | >>> 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 } < class 'set' > |
三、关系测试
1、交集(intersection())
1 2 3 4 5 6 7 | >>> 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())
1 2 3 4 5 6 7 | >>> 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())
1 2 3 4 5 6 7 | >>> 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()
判断一个集合是否是另一个集合的子集
1 2 3 4 5 6 7 | >>> 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()
判断一个集合是否是另一个集合的父集
1 2 3 4 5 6 7 | >>> 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())
把两个集合没有交集的数值取出来
1 2 3 4 5 6 7 | >>> 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
1 2 3 4 5 6 7 8 9 10 11 12 | >>> 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、交集(&)
1 2 3 4 5 6 7 | >>> 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、并集(|)
1 2 3 4 5 6 7 | >>> 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、差集(-)
1 2 3 4 5 6 7 | >>> 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、对称差集(^)
1 2 3 4 5 6 7 | >>> 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、是否是子集(<=)
1 2 3 4 5 6 7 | >>> 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、是否是父集(>=)
1 2 3 4 5 6 7 | >>> 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())
1 2 3 4 5 6 7 8 9 10 | >>> 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())
1 2 3 4 5 6 | >>> 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()
1 2 3 4 5 6 7 8 9 10 11 12 13 | >>> 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 (most recent call last): File "<input>" , line 1 , in <module> KeyError: 1 |
特别提示:用remove删除时,当元素不存在,会报错
②pop()
1 2 3 4 5 6 7 | >>> 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()
1 2 3 4 5 6 7 8 | >>> 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())
1 2 3 4 5 | >>> 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 的成员
1 2 3 4 5 | >>> name_1 = [ 1 , 2 , 3 , 4 , 7 , 8 , 7 , 10 ] >>> name_1 = set (name_1) #结果输出 >>> 1 in name_1 True |
6、x not in s
测试 x 是否不是 s 的成员
1 2 3 4 5 | >>> name_1 = [ 1 , 2 , 3 , 4 , 7 , 8 , 7 , 10 ] >>> name_1 = set (name_1) #输出 >>> 12 not in name_1 True |
作者:罗阿红
出处:http://www.cnblogs.com/luoahong/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
分类:
1.Python基础
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?