[Python3] 014 集合的内置方法
- 1. Python3 中如何查看 set() 的内置方法
- 2. 少废话,上例子
- (1) add()
- (2) 又见清理大师 clear()
- (3) 又见拷贝君 copy()
- (4) 找茬君 difference()
- (5) difference_update()
- (6) discard()
- (7) intersection()
- (8) intersection_update()
- (9) isdisjoint()
- (10) issubset()
- (11) issuperset()
- (12) 又见 pop()
- (13) 又见 remove()
- (14) symmetric_difference()
- (15) symmetric_difference_update()
- (16) union()
- (17) update()
1. Python3 中如何查看 set() 的内置方法
- help(set()) / help(set)
- dir(set()) / dir(set)
2. 少废话,上例子
(1) add()
- 释义:
- 向集合中添加一个元素
- 若元素已经存在,则此操作无效
- 示例:
# 例1.1 向集合内添加元素
s1_1 = {1}
s1_1.add(2)
print(s1_1)
- 运行结果
{1, 2}
# 例1.2
s1_2 = {1}
s1_2.add(3, 4)
- 运行结果
TypeError……add() takes exactly one argument (2 given)
报错原因:add() 只能加一个元素。
想要一次加入多个元素请看 (17) update()。
# 例1.3
s1_3 = {1, 2, 3}
s1_3.add(2)
print(s1_3)
- 运行结果
{1, 2, 3}
加入一个已有的元素不报错。
(2) 又见清理大师 clear()
- 释义:
- 删除集合中所有的元素
- 示例:
# 例2
s2 = {1,2,3,4,5}
print(s2)
print(id(s2))
s2.clear()
print(s2)
print(id(s2))
- 运行结果
{1, 2, 3, 4, 5}
2229866605480
set()
2229866605480
id() 显示 clear() 是原地清空。
列表被清空后仅输出 [],集合被清空后输出 set()。
(3) 又见拷贝君 copy()
- 释义:
- 返回集合的浅拷贝
- 关于深拷贝与浅拷贝,之前挖过坑,编号 Py006-3
- 示例:
# 例3
s3_1 = {1, 2, 3, 4, 5}
s3_2 = s3_1.copy()
print(s3_1)
print(id(s3_1))
print(s3_2)
print(id(s3_2))
- 运行结果
{1, 2, 3, 4, 5}
2229867508456
{1, 2, 3, 4, 5}
2229868024776
(4) 找茬君 difference()
- 释义:
- 将两个或多个集合的差异作为新集合返回
- 所有返回的元素都是基于使用 difference() 的那个集合(不是 difference() 括号中的那个集合)
- 示例:
# 例4
s4_1 = {1, 2, 3}
s4_2 = {0, 1, 2, 3, 4}
s4_3 = {6, 7, 8, 9}
s4_4 = {2}
s4_5 = {3, 4}
print(s4_1.difference(s4_2))
print(s4_1.difference(s4_3))
print(s4_1.difference(s4_4))
print(s4_1.difference(s4_5))
print(s4_1.difference(s4_4, s4_5))
print(s4_1.difference(s4_3, s4_4, s4_5))
- 运行结果
set()
{1, 2, 3}
{1, 3}
{1, 2}
{1}
{1}
从结果看:
- 若 A 是 B 的子集,则 A.difference(B) 输出 set()
- 若 A 与 B 没有交集,则 A.difference(B) 输出 A 本身
- 若 B 是 A 的子集,则 A.difference(B) 输出 A 中与 B 不同的元素,并用大括号括起来
- 若 A 与 B 有交集,又各自有不同的元素,则 A.difference(B) 是将 A 中除去 A 与 B 的交集后的元素输出,并用大括号括起来
- A 可以与 (B1, B2, ……, Bn) 使用 difference(),先求 (B1, B2, ……, Bn) 的并集,再按上面 1~4 运行
- 感觉像是在做概率论中的古典概型
(5) difference_update()
- 释义:
- 从此集合中移除所有与其他集合重复的元素
- 示例:
# 例5
s5_1 = {"YorkFish", "Felicity Smoak", "Dinah Drake"}
s5_2 = {"John Diggle", "Dinah Drake", "Constantine"}
s5_1.difference_update(s5_2)
print(s5_1)
- 运行结果
{'YorkFish', 'Felicity Smoak'}
difference_update() 是更新原集合;
difference() 是返回值。
(6) discard()
- 释义:
- 如果元素是是集合的成员,则将其从集合中移除
- 如果元素不是集合的成员,则不执行任何操作
- 示例:
# 例6
s6 = {1, 2, 3, 4, 5}
s6.discard(1)
print(s6)
s6.discard(6)
print(s6)
- 运行结果
{2, 3, 4, 5}
{2, 3, 4, 5}
(7) intersection()
- 释义:
- 将两个集合的交集作为新集合返回
- 示例:
# 例7
s7_1 = {"YorkFish", "Felicity Smoak", "Dinah Drake"}
s7_2 = {"John Diggle", "Dinah Drake", "Constantine"}
s7_3 = s7_1.intersection(s7_2)
print(s7_3)
- 运行结果
{'Dinah Drake'}
(8) intersection_update()
- 释义:
- 用自身和另一个集合的交集更新集合
- 示例:
# 例8
s8_1 = {"YorkFish", "Felicity Smoak", "Dinah Drake"}
s8_2 = {"John Diggle", "Dinah Drake", "Constantine"}
s8_1.intersection_update(s8_2)
s8_3 = s8_1.intersection_update(s8_2)
print(s8_1)
print(s8_3)
- 运行结果
{'Dinah Drake'}
None
s8_3 接收到的 None 应该是 intersection_update() 返回的。
(9) isdisjoint()
- 释义:
- 如果两个集合的交集为空集,则返回 True;否则,返回 False
- 示例:
# 例9
s9_1 = {"YorkFish", "Felicity Smoak", "Dinah Drake"}
s9_2 = {"John Diggle", "Dinah Drake", "Constantine"}
s9_3 = {"Rorschach", "Comedian", "Nite Owl II"}
print(s9_1.isdisjoint(s9_2))
print(s9_1.isdisjoint(s9_3))
- 运行结果
False
True
(10) issubset()
- 释义:
- 形如 A.issubset(B) 时,如果集合 A 是集合 B 的子集,则返回 True;否则,返回 False
- 示例:
# 例10
s10_1 = {"YorkFish", "Felicity Smoak", "Dinah Drake"}
s10_2 = {"Dinah Drake", "Felicity Smoak"}
s10_3 = {"Rorschach", "Comedian", "Nite Owl II"}
print(s10_2.issubset(s10_1))
print(s10_3.issubset(s10_1))
- 运行结果
True
False
(11) issuperset()
- 释义:
- 与 issubset() 相反
- 形如 A.issuperset(B) 时,如果集合 A 是集合 B 的超集,则返回 True;否则,返回 False
- 示例:
# 例11
s11_1 = {"YorkFish", "Felicity Smoak", "Dinah Drake"}
s11_2 = {"Dinah Drake", "Felicity Smoak"}
s11_3 = {"Rorschach", "Comedian", "Nite Owl II"}
print(s11_1.issuperset(s11_2))
print(s11_1.issuperset(s11_3))
- 运行结果
True
False
(12) 又见 pop()
- 释义:
- 删除并且返回集合中的一个元素
- 如果集合为空,则抛出异常 KeyError (关于异常,挖个坑,日后填平,编号 Py014-1)
- 与列表不同,集合的 pop() 从某种程度上说是随机的
- 示例:
# 例12
s12_1 = {1, 2, 3, 4, 5, 6}
s12_2 = s12_1.pop()
print(s12_2)
print(s12_1)
- 运行结果
1
{2, 3, 4, 5, 6}
(13) 又见 remove()
- 释义:
- 从集合中删除元素;但它必须是该集合的成员
- 如果需要删除的元素不是该集合的成员,则抛出异常 keyError
- 示例:
# 例13.1
s13_1 = {1, 2, 3, 4, 5}
s13_2 = s13_1.remove(1)
print(s13_2)
print(s13_1)
- 运行结果
None
{2, 3, 4, 5}
# 例13.2 接着例13.1
s13_3 = s13_1.remove(2, 3)
print(s13_3)
- 运行结果
TypeError……remove() takes exactly one argument (2 given)
remove() 一次只接收一个参数,给多了不行。
(14) symmetric_difference()
- 释义:
- 将两个集合的“对等差分”作为新集合返回
- 对等差分:不重复部分
- 示例:
# 例14
s14_1 = {"YorkFish", "Felicity Smoak", "Dinah Drake"}
s14_2 = {"John Diggle", "Dinah Drake", "Constantine"}
s14_3 = s14_1.symmetric_difference(s14_2)
print(s14_3)
- 运行结果
{'Felicity Smoak', 'John Diggle', 'Constantine', 'YorkFish'}
(15) symmetric_difference_update()
- 释义:
- 使用自身和另一个集合的“对等差分”更新集合
- 示例:
# 例15
s15_1 = {"YorkFish", "Felicity Smoak", "Dinah Drake"}
s15_2 = {"John Diggle", "Dinah Drake", "Constantine"}
s15_1.symmetric_difference_update(s15_2) # 此处与 symmetric_difference() 有别
print(s15_3)
- 运行结果
{'John Diggle', 'Felicity Smoak', 'Constantine', 'YorkFish'}
symmetric_difference() 是将对等差分返回给一个新的集合;
symmetric_difference_update() 是用对等差分更新原有集合。
(16) union()
- 释义:
- 将集合的并集作为新的集合返回
- 示例:
# 例16
s16_1 = {"YorkFish", "Felicity Smoak", "Dinah Drake"}
s16_2 = {"John Diggle", "Dinah Drake", "Constantine"}
s16_3 = s16_1.union(s16_2)
print(s16_3)
- 运行结果
{'John Diggle', 'YorkFish', 'Dinah Drake', 'Constantine', 'Felicity Smoak'}
(17) update()
- 释义:
- 使用自身和其他集合的并集更新集合
- 示例:
# 例17
s17_1 = {"YorkFish", "Felicity Smoak", "Dinah Drake"}
s17_2 = {"John Diggle", "Dinah Drake", "Constantine"}
s17_1.update(s17_2)
print(s17_1)
- 运行结果
{'Constantine', 'Felicity Smoak', 'John Diggle', 'Dinah Drake', 'YorkFish'}
update() 与 union() 的区别就像 symmetric_difference_update() 与 symmetric_difference() 的区别。
update() 是更新原有的集合;
union() 是将结果返回给一个新的集合。
[Python3] 014 集合的内置方法的更多相关文章
- day07-列表类型/元组类型/字典类型/集合类型内置方法
目录 列表类型内置方法 元组类型内置方法 字典类型内置方法 集合类型内置方法 列表类型内置方法 用来存多个元素,[]内用逗号隔开任意数据类型的元素 1. list()强制类型转换 print(list ...
- day09-2 字典,集合的内置方法
目录 字典的内置方法 作用 定义方式 方法 优先掌握 需要掌握 存储一个值or多个值 有序or无序 可变or不可变 集合的内置方法 作用 定义方式 方法 存储一个值or多个值 有序or无序 可变or不 ...
- [Python3] 015 冰冻集合的内置方法
目录 0. 前言 英文名 元素要求 使用限制 返回 方法数量 1. 如何查看 frozenset() 的内置方法 2. 少废话,上例子 2.1 copy() 2.2 difference() 2.3 ...
- [Python3] 017 字典的内置方法
目录 1. Python3 中如何查看 dict() 的内置方法 2. 少废话,上例子 (1) 清理大师 clear() (2) 拷贝君 copy() (3) get(key, default=Non ...
- Python3.6 字典的内置方法
1.dict.clear(self) 删除字典内所有元素 2.dict.copy(self) 返回一个字典的浅复制,拷贝父对象,不会拷贝对象的内部的子对象 3.dict.fromkeys(self, ...
- what's the python之基本运算符及字符串、列表、元祖、集合、字典的内置方法
计算机可以进行的运算有很多种,运算按种类可分为算数运算.比较运算.逻辑运算.赋值运算.成员运算.身份运算.字符串和列表的算数运算只能用+和*,字典没有顺序,所以不能进行算数运算和比较运算.比较运算中= ...
- day007 列表类型、元祖类型、 字典类型、 集合类型的内置方法
目录 列表数据类型的内置方法 作用 定义方式 优先掌握的方法 需要掌握的方法 元祖类型的内置方法 作用 定义方式 优先掌握的方法(参考列表方法) 字典类型的内置方法 作用 定义方式 优先掌握的方法 需 ...
- python之字符串,列表,字典,元组,集合内置方法总结
目录 数字类型的内置方法 整型/浮点型 字符串类型的内置方法 列表的内置方法 字典的内置方法 元组的内置方法 集合类型内置方法 布尔类型 数据类型总结 数字类型的内置方法 整型/浮点型 加 + 减 - ...
- python常用数据类型内置方法介绍
熟练掌握python常用数据类型内置方法是每个初学者必须具备的内功. 下面介绍了python常用的集中数据类型及其方法,点开源代码,其中对主要方法都进行了中文注释. 一.整型 a = 100 a.xx ...
随机推荐
- JS实现网页飘窗
1.在html中设置一个飘窗的div,div中可以添加图片,添加文字通过css展现在飘窗中: <!--飘窗--> <div id="roll"> <i ...
- [每日一讲] Python系列:数字与运算符
数字(数值)型 Python 数字数据类型用于存储数值.数据类型是不可变(immutable)的,这就意味着如果改变数字数据类型的值,将重新分配内存空间. Python 支持三种不同的数值类型: 整型 ...
- node.js从入门到起飞
第一个node程序: 首先创建一个js文件,命名index.js(可随意),然后在文件里面输入 : console.log("Hello World"); 使用 Git Bash ...
- js-将传来的数据排序,让(全部)这个小按钮小圈圈,始终排列在最前面
let arryDemo=[]; for(var i=0;i<data.data.length;i++){ if(data.data[i].name=='全部'){ arryDemo.push( ...
- 求大师点化,寻求大文件(最大20G左右)上传方案
之前仿造uploadify写了一个HTML5版的文件上传插件,没看过的朋友可以点此先看一下~得到了不少朋友的好评,我自己也用在了项目中,不论是用户头像上传,还是各种媒体文件的上传,以及各种个性的业务需 ...
- 洛谷P1309 瑞士轮——题解
题目传送 思路非常简单,只要开始时把结构体排个序,每次给赢的加分再排序,共r次,最后再输出分数第q大的就行了. (天真的我估错时间复杂度用每次用sort暴力排序结果60分...)实际上这道题估算时间复 ...
- 3D Computer Grapihcs Using OpenGL - 07 Passing Data from Vertex to Fragment Shader
上节的最后我们实现了两个绿色的三角形,而绿色是直接在Fragment Shader中指定的. 这节我们将为这两个三角形进行更加自由的着色——五个顶点各自使用不同的颜色. 要实现这个目的,我们分两步进行 ...
- inux 下zip包的压缩与解压
linux zip 命令详解 功能说明:压缩文件. 语 法:zip [-AcdDfFghjJKlLmoqrSTuvVwXyz$][-b <工作目录>][-ll][-n <字尾字符串& ...
- [CSP-S模拟测试]:小P的单调数列(树状数组+DP)
题目描述 小$P$最近喜欢上了单调数列,他觉得单调的数列具有非常多优美的性质.经过小$P$复杂的数学推导,他计算出了一个单调增数列的艺术价值等于该数列中所有书的总和.并且以这个为基础,小$P$还可以求 ...
- 认识了一个新的手机游戏剖析工具- SnapDragon Profiler
原来这个是高通的工具,具说UNITY官方推荐了这个工具.大概看了下,可以从宏观上实时剖析手机应用的方方面面