最重要的一点就是如果您觉得对您有帮助,希望可以点个在看,或者点一点文章中最下面的广告,给小编我加个鸡腿,毕竟小编写文章也是很辛苦的,非常感谢
在生活中比如我们去约会,女朋友说去她宿舍楼下集合,比如上体育课的时候,体育老师催着口哨,吆喝着集合,比如我们好几个人越好了去爬山,在某个地点集合,等等,似乎集合在生活中无处不在,此‘集合’非‘集合’,但是都是异曲同工之妙,都是具有交集
所以今天我们就来讲讲 python 中集合,集合set 是装有独特值的无序“袋子”。一个简单的集合可以包含任何数据类型的值。如果有两个集合,则可以执行像联合、交集以及集合求差等标准集合运算
1. 该如何创建集合 set
1. 要创建只包含一个值的集合,仅需将该值放置于花括号之间({}
)
2. 实际上,集合以 类 的形式实现,但目前还无须考虑这一点
3. 要创建多值集合,请将值用逗号分开,并用花括号将所有值包裹起来
还可以 列表 为基础创建集合
1. 要从列表创建集合,可使用 set()
函数。(懂得如何实现集合的学究可能指出这实际上并不是调用某个函数,而是对某个类进行实例化。我_保证_在本书稍后的地方将会学到其中的区别。目前而言,仅需知道 set()
行为与函数类似,以及它返回一个集合)
2. 正如我之前提到的,简单的集合可以包括任何数据类型的值。而且,如我之前所提到的,集合是 无序的。该集合并不记得用于创建它的列表中元素的最初顺序。如果向集合中添加元素,它也不会记得添加的顺序
3. 初始的列表并不会发生变化
修改集合
有两种方法可向现有集合中添加值: add()
方法和 update()
方法
1. add()
方法接受单个可以是任何数据类型的参数,并将该值添加到集合之中
2. 集合是装 唯一值 的袋子。如果试图添加一个集合中已有的值,将不会发生任何事情。将不会引发一个错误;只是一条空操作
3. update()
方法仅接受一个集合作为参数,并将其所有成员添加到初始列表中。其行为方式就像是对参数集合中的每个成员调用 add()
方法
4. 由于集合不能包含重复的值,因此重复的值将会被忽略
5. 实际上,可以带任何数量的参数调用 update()
方法。如果调用时传递了两个集合, update()
将会被每个集合中的每个成员添加到初始的集合当中(丢弃重复值)
6. update()
方法还可接受一些其它数据类型的对象作为参数,包括列表如果调用时传入列表,update()
将会把列表中所有的元素添加到初始集合中
从集合中删除元素
有三种方法可以用来从集合中删除某个值。前两种,discard()
和 remove()
有细微的差异
1. discard()
接受一个单值作为参数,并从集合中删除该值
2. 如果针对一个集合中不存在的值调用 discard()
方法,它不进行任何操作。不产生错误;只是一条空指令
3. remove()
方法也接受一个单值作为参数,也从集合中将其删除
4. 区别在这里:如果该值不在集合中,remove()
方法引发一个 KeyError
例外
就像列表,集合也有个 pop()
方法
1. pop()
方法从集合中删除某个值,并返回该值。然而,由于集合是无序的,并没有“最后一个”值的概念,因此无法控制删除的是哪一个值。它基本上是随机的
2. clear()
方法删除集合中 所有 的值,留下一个空集合。它等价于 a_set = set()
,该语句创建一个新的空集合,并用之覆盖 a_set
变量的之前的值
3. 试图从空集合中弹出某值将会引发 KeyError
例外
常见集合操作
1. 要检测某值是否是集合的成员,可使用 in
运算符。其工作原理和列表的一样
2. union()
方法返回一个新集合,其中装着 在两个 集合中出现的元素
3. intersection()
方法返回一个新集合,其中装着 同时 在两个集合中出现的所有元素
4. difference()
方法返回的新集合中,装着所有在 a_set
出现但未在 b_set
中的元素
5. symmetric_difference()
方法返回一个新集合,其中装着所有 只在其中一个 集合中出现的元素
其他操作方式
集合的分类:
并集:以属于A或属于B的元素为元素的集合成为A与B的并(集)
交集:以属于A且属于B的元素为元素的集合成为A与B的交(集)
差:以属于A而不属于B的元素为元素的集合成为A与B的差(集)
对称差:对称差相当于两个相对补集的并集
注:空集属于任何集合,但它不属于任何元素.
最后,有几个您可能会问到的问题
1. a_set
是 b_set
的 子集 — 所有 a_set
的成员均为 b_set
的成员
2. 同样的问题反过来说, b_set
是 a_set
的 超集,因为 a_set
的所有成员均为 b_set
的成员
3. 一旦向 a_set
添加一个未在 b_set
中出现的值,两项测试均返回 False
布尔上下文环境中的集合
可在 if
这样的 布尔类型上下文环境中 使用集合
1. 在布尔类型上下文环境中,空集合为假值
2. 任何至少包含一个上元素的集合为真值
3. 任何至少包含一个上元素的集合为真值。元素的值无关紧要
集合清除 clear
ok, 今天集合就讲到这里吧,我相信集合中的知识不仅仅只有这些,还有更加深层次的东西值得我们去好好的研究研究,今天的目标算是完成了,不知道读者的小目标完成没有,真心希望读者跟着小编的节奏来学习,不要过于心急,就像投资界大佬所说的,时间才是最有复利价值的,只管深入学习,深入思考每一件事情,只管成长,剩下的交予时间吧,因为人与人之间真的是不平等的,天底下最平等的东西就只有’时间’,这个维度了,我希望读者跟着我在不同维度上扩展,不要局限于某一维度,但是我们至少要做某一维度的强者,自己的强者
请继续关注我
最重要的一点就是如果您觉得对您有帮助,希望可以点个在看,或者点一点文章中最下面的广告,给小编我加个鸡腿,毕竟小编写文章也是很辛苦的,非常感谢