惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

人人都是产品经理
人人都是产品经理
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
月光博客
月光博客
雷峰网
雷峰网
Google DeepMind News
Google DeepMind News
Y
Y Combinator Blog
Microsoft Security Blog
Microsoft Security Blog
M
MIT News - Artificial intelligence
WordPress大学
WordPress大学
MongoDB | Blog
MongoDB | Blog
V
V2EX
博客园 - 【当耐特】
GbyAI
GbyAI
Stack Overflow Blog
Stack Overflow Blog
I
InfoQ
Martin Fowler
Martin Fowler
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Hugging Face - Blog
Hugging Face - Blog
B
Blog
V
Visual Studio Blog
D
DataBreaches.Net
C
Check Point Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
F
Fortinet All Blogs

晚花行乐

马克卡尼在2026年达沃斯论坛上的讲话(阅读材料) | 晚花行乐 鸡娃如何用力才是恰到好处 | 晚花行乐 读万卷书,行万里路的辩证关系 | 晚花行乐 反对培训机构掐尖招生 | 晚花行乐 小泽和建国会谈最后10分钟全文(阅读材料) | 晚花行乐 来看看 DeepSeek 怎么鸡娃 | 晚花行乐 谈谈基本功 | 晚花行乐 惠普 ProDesk SFF PC 各系列参数对比 | 晚花行乐 解决瘦客户机上安装 Debian 12 启动失败问题 | 晚花行乐 意拾喻言:老外写的文言文 | 晚花行乐 笠翁对韵中的典故(十三元) | 晚花行乐 谈谈中考取消四小门 | 晚花行乐 亚马逊云科技产品免费试用攻略(3) - 对象存储服务 | 晚花行乐 在 Windows 10 LTSC 版本上安装 WSL2 | 晚花行乐 Debian 12 的常用配置项 | 晚花行乐 在 Debian 12 上安装 Nvidia 显卡驱动程序 | 晚花行乐 解决 Debian 12 关机失败问题 | 晚花行乐 解决 VS Code 自动更新版本后卡在连接界面 | 晚花行乐 观看巴黎奥运会有感 | 晚花行乐 在 Windows10 上安装惠普旧打印机驱动程序 | 晚花行乐 欢迎关注公众号:晚花行乐 | 晚花行乐 如何编写拼写检查器 | 晚花行乐 亚马逊云科技产品免费试用攻略(2) - 云服务器 | 晚花行乐 Pandas 中 axis 参数的理解(附实例) | 晚花行乐 我打算命个名,叫什么什么 Manager | 晚花行乐 上海武康路历史建筑一览 | 晚花行乐 Python 实现简单的数学表达式解析并处理 | 晚花行乐 观看马拉松的感悟 | 晚花行乐 Python 保存 Cookies 到文件并再次读取 | 晚花行乐 如何为 Hugo 静态网站添加评论功能 | 晚花行乐
Python 的集合(set)类型 | 晚花行乐
2016-10-10 · via 晚花行乐

本文简单介绍了Python语言里set类型自带的方法,set类型表示元素和集合的从属关系(membership),和列表等序列相比,最大的特点是无序。可以跟数学里的集合概念完全对应起来。

概念

数学里的集合概念,在Python语言里对应的是set类型。与list,tuple不同的地方是,set更加强调的是一种"从属关系"(membership),跟顺序无关,所以有重复的元素会先排除。

>>> set([1, 1, 1, 1, 2, 3])
set([1, 2, 3])  #重复元素被排除
>>> set([3, 2, 1])
set([1, 2, 3])  #无序的集合
>>>

set类型的创建

花括号用来创建set类型的变量,这与字典很类似,只是缺少了value,后面会逐渐发现,set类型和字典的key有一些类似之处,比如:无序、不可重复、必须是hashable的,所以用花括号表示,是理所当然的。

set类型还有一种标准的表示法是 set([…]) ,例如

>>> {'a','b'}
set(['a', 'b'])
>>> 

set添加元素

set类型有内置函数add用来给set添加元素

>>> A = {'a','b'}
>>> A.add('c')
>>> A
set(['a', 'c', 'b'])
>>>

set更新元素

set类型有四个内置update函数用来给set添加元素,对应于Python 的集合运算中的4种运算

并集更新

与add类似,只是添加的不是单个元素,而且另一个集合,这和字典的update函数功能非常相似。最后的结果是两个集合的并集

>>> A = {'a','b'}
>>> A.update({'c', 'd'})    #iterable的参数都可以传递
>>> A
set(['a', 'c', 'b', 'd'])
>>> 

另一种写法是:|=

>>> A = {'a','b'}
>>> A |= {'c', 'd'}
>>> A
set(['a', 'c', 'b', 'd'])
>>>

交集更新

内置函数intersection_update返回的结果是两个集合的交集

>>> A = {'a','b'}
>>> A.intersection_update({'b', 'd'})   #iterable的参数都可以传递
>>> A
set(['b'])
>>>

另一种写法是 &=

>>> A = {'a','b'}
>>> A &= {'b', 'd'}
>>> A
set(['b'])
>>> 

差集更新

内置函数difference_update返回的结果是两个集合的差集

>>> A = {'a','b'}
>>> A.difference_update({'b', 'd'})   #iterable的参数都可以传递
>>> A
set(['a'])
>>>  

另一种写法是 -=

>>> A = {'a','b'}
>>> A -= {'b', 'd'}
>>> A
set(['a'])
>>> 

对称差集更新

内置函数symmetric_difference_update返回的结果是两个集合的对称差集

>>> A = {'a','b'}
>>> A.symmetric_difference_update({'b', 'd'})   #iterable的参数都可以传递
>>> A
set(['a', 'd'])
>>>

另一种写法是 ^=

>>> A = {'a','b'}
>>> A ^= {'b', 'd'}
>>> A
set(['a', 'd'])
>>> 

set移除元素

remove函数: set类型有好几个内置函数用来从set中移除已有的元素,首先是remove函数,如果remove的元素不存在,会抛出 KeyError 异常。

>>> A = {'a','b'}
>>> A.remove('c')
Traceback (most recent call last):
    File "<pyshell#65>", line 1, in <module>
    A.remove('c')
KeyError: 'c'
>>>

discard函数

若要不抛出异常,可以使用discard函数

>>> A = {'a','b'}
>>> A.discard('c')
>>> A
set(['a', 'b'])
>>>

pop函数

上述两个函数都是指定set中某一个元素,而pop函数无需指定元素,每次运行时会删除任意一个元素,并返回这个元素的值。当set为空时,抛出 KeyError

>>> A = {'a','b'}
set(['a', 'b'])
>>> A.pop()
'a'
>>> A.pop()
'b'
>>> A.pop()
Traceback (most recent call last):
    File "<pyshell#71>", line 1, in <module>
    A.pop()
KeyError: 'pop from an empty set'
>>>

清空set

set的内置函数 clear 用来清空set

>>> A = {'a','b'}
set(['a', 'b'])
>>> A.clear()
>>> A
set([])
>>>

set comprehension

与list、dict类似,set类型也能有comprehension的构造法:

>>> {i for i in range(10)}
set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> 

各位读后有什么想法,请在下方留言吧!如果对本文有疑问或者寻求合作,欢迎 联系邮箱邮箱已到剪贴板

精彩评论