爬虫 (十七) 你懂集合? (九)


风晓
风晓 2023-12-28 15:33:12 53249 赞同 0 反对 0
分类: 资源
在生活中比如我们去约会,女朋友说去她宿舍楼下集合,比如上体育课的时候,体育老师催着口哨,吆喝着集合,比如我们好几个人越好了去爬山,在某个地点集合,等等,似乎集合在生活中无处不在,此‘集合’非‘集合’,但是都是异曲同工之妙,都是具有交集 所以今天我们就来讲讲 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, 今天集合就讲到这里吧,我相信集合中的知识不仅仅只有这些,还有更加深层次的东西值得我们去好好的研究研究,今天的目标算是完成了,不知道读者的小目标完成没有,真心希望读者跟着小编的节奏来学习,不要过于心急,就像投资界大佬所说的,时间才是最有复利价值的,只管深入学习,深入思考每一件事情,只管成长,剩下的交予时间吧,因为人与人之间真的是不平等的,天底下最平等的东西就只有'时间',这个维度了,我希望读者跟着我在不同维度上扩展,不要局限于某一维度,但是我们至少要做某一维度的强者,自己的强者

如果您发现该资源为电子书等存在侵权的资源或对该资源描述不正确等,可点击“私信”按钮向作者进行反馈;如作者无回复可进行平台仲裁,我们会在第一时间进行处理!

评价 0 条
风晓L1
粉丝 1 资源 2038 + 关注 私信
最近热门资源
银河麒麟桌面操作系统备份用户数据  127
统信桌面专业版【全盘安装UOS系统】介绍  122
银河麒麟桌面操作系统安装佳能打印机驱动方法  114
银河麒麟桌面操作系统 V10-SP1用户密码修改  105
最近下载排行榜
银河麒麟桌面操作系统备份用户数据 0
统信桌面专业版【全盘安装UOS系统】介绍 0
银河麒麟桌面操作系统安装佳能打印机驱动方法 0
银河麒麟桌面操作系统 V10-SP1用户密码修改 0
作者收入月榜
1

prtyaa 收益393.62元

2

zlj141319 收益218元

3

1843880570 收益214.2元

4

IT-feng 收益209.03元

5

风晓 收益208.24元

6

777 收益172.71元

7

Fhawking 收益106.6元

8

信创来了 收益105.84元

9

克里斯蒂亚诺诺 收益91.08元

10

技术-小陈 收益79.5元

请使用微信扫码

加入交流群

请使用微信扫一扫!