python ---set集合

差集:(-或difference、对称差集:^或symmetric_difference)

set之difference & symmetric_difference

首先,对于difference()方法来说,就是不同的意思;a.defference(b)方法与b.defference(a)方法的结果是不一样的。怎么理解呢?
1、a.defference(b) 这个方法的结果就是两个集合在比较时返回a集合中存在但是b集合中不存在的元素集合;
2、b.defference(a)这个方法返回的结果就是两个集合在比较时b集合中存在但a集合中不存在的元素集合;

从下面的例子中可以看出,当a集合调用该方法时【a.difference(b)】,结果即为{3,4};同理,当b集合调用该方法时[b.difference(a)]结果就应该是{5,6,7}
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
再来介绍symmetric_difference(),这个方法就简单了,直接来说就是去重;直接上例子:
在这里插入图片描述
在这里插入图片描述
从上面的例子中就可以看出来了,这个方法不管是谁调用返回的结果都是一样的;就是***将两个集合中重复的元素去除,剩下的组成新的集合返回***

从网上其他地方找来的总结,感觉总结的很到位!!
在这里插入图片描述

另外difference()可以传入多个集合,如a.defference(b,c)即表示a集合中存在,但b集合和c集合不存在【a-b-c】

最后画张图总结下这两个方法的区别
在这里插入图片描述

并集:|或union

在这里插入图片描述
这个so easy 直接上贴图,从上面的图片也可以看出来,就是直接返回红色部分
在这里插入图片描述

交集:&或intersection

在这里插入图片描述
交集就是两个集合的公共部分,调用interssction()就是返回两个集合的交集
在这里插入图片描述

包含关系

在这里插入图片描述
s1.isdisjoint(s2) 哇这个方法有毒!!刚开始被这个方法绕进去了 哈哈!上网查了下 disjoint是不相交的意思,isdisjoint就是判断是不是不相交的意思了 看了很多博客写的有点绕! 是不是不相交?

如果两个集合相交就返回False,如果两个元素不相交就返回True
是不是没有公共部分,没有公共部分就是不相交就返回True,有公共部分就是相交,相交就返回False
下面是官方给的解释,很直白。
在这里插入图片描述
上个图看看嘛
在这里插入图片描述
s1.issuperset(s2)
s2.issubset(s1)
这两个方法就很好简单了,我是这么理解的,issuperset判断s1集合是不是s2集合的爸爸,这里显然s1集合>=s2集合是才能满足要求;issubset判断s2集合是不是s1集合的儿砸(⊙o⊙)…,这里显然s2集合<=s1集合;下面的代码段就可以直接反应出结果,都为True

在这里插入图片描述

集合的常用操作

元素的增加

单个元素的增加 : add(),add的作用类似列表中的append
对序列的增加 : update(),而update类似extend方法,update方法可以支持同时传入多个参数:

a = {1, 2}
a.update([3, 4], [5, 6, 8, 7])
print(a)
#{1, 2, 3, 4, 5, 6, 7, 8}
a.update('hello')
a.update([3, 4], [5, 6, 8, 7])
a.update([3, 4], [5, 6, 8, 7])
print(a)
#{1, 2, 3, 4, 5, 6, 7, 8, 'l', 'h', 'e', 'o'}
a.update([3, 4], [5, 6, 8, 7])
print(a)
#{1, 2, 3, 4, 5, 6, 7, 8, 'l', 'h', 'e', 'hello', 'o'}

元素的删除

集合删除单个元素有两种方法:

元素不在原集合中时:

set.discard(x)不会抛出异常 discard(丢弃)
set.remove(x)会抛出KeyError错误 remove(移除)

a = {1, 2, 3, 45, 6}
a.discard(1)
print(a)
#{2, 3, 6, 45}
a.discard(1)
print(a)
#{2, 3, 6, 45}
a.remove(3)  #没有返回值
a.remove(3)

pop():由于集合是无序的,pop返回的结果不能确定,且当集合为空时调用pop会抛出KeyError错误,
clear():清空集合

a = {3, "a", 2.1, 11, 2, 3, 4, 5}
print(a)
#{2, 3, 'a', 4, 5, 11, 2.1}
a.pop()
a.pop()
a.pop()
a.pop()
print(a)
#{5, 11, 2.1}
a.clear()
print(a)
#set()
a.pop()
利用 TensorFlow 训练自己的目标识别器。本文内容来自于我的毕业设计,基于 TensorFlow 1.15.0,其他 TensorFlow 版本运行可能存在问题。.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值