随笔 - 214  文章 - 12  评论 - 40  阅读 - 38万

Python基础14 集合

集合(set)是一个无序的不重复元素序列。
当集合中的元素存在与否比其出现次序、出现次数更加重要时,我们就会使用集合。
通过使用集合,你可以测试某些元素的资格或情况,检查它们是否是其它集合的子集,找到两个集合的交集等;

 

一、创建集合

可以使用大括号 { } 或者 set() 函数创建集合。注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
如果要初始化一个带有值的集合,可以向set()传入一个列表。

创建格式:

>>> s = {1, 2, 3, 4, 5, 6}
>>> s
{1, 2, 3, 4, 5, 6}
>>> set([1, 2, 3, 4, 5, 6])
{1, 2, 3, 4, 5, 6}
>>> set('123456')
{'3', '6', '5', '1', '2', '4'}

 

二、集合运算

集合之间也可进行数学集合运算(例如:并集、交集等),可用相应的操作符或方法来实现。

1、子集

  子集,为某个集合中一部分的集合,故亦称部分集合。
  使用操作符 < 执行子集操作,也可使用方法 issubset() 完成。

复制代码
>>> A = set('abcd')
>>> B = set('cdef')
>>> C = set("ab")
>>> C < A
True         # C 是 A 的子集
>>> C < B
False
>>> C.issubset(A)
True        
复制代码

2、并集

  一组集合的并集是这些集合的所有元素构成的集合,而不包含其他元素。
  使用操作符 | 执行并集操作,同样地,也可使用方法 union() 完成。

>>> A | B
{'c', 'b', 'f', 'd', 'e', 'a'}
>>> A.union(B)
{'c', 'b', 'f', 'd', 'e', 'a'}

3、交集

  两个集合 A 和 B 的交集是含有所有既属于 A 又属于 B 的元素,而没有其他元素的集合。
  使用 & 操作符执行交集操作,同样地,也可使用方法 intersection() 完成。

>>> A & B
{'c', 'd'}
>>> A.intersection(B)
{'c', 'd'}

4、差集

  A 与 B 的差集是所有属于 A 且不属于 B 的元素构成的集合。
  使用操作符 - 执行差集操作,同样地,也可使用方法 difference() 完成。

>>> A - B
{'b', 'a'}
>>> A.difference(B)
{'b', 'a'}

5、对称差

  两个集合的对称差是只属于其中一个集合,而不属于另一个集合的元素组成的集合。
  使用 ^ 操作符执行差集操作,同样地,也可使用方法 symmetric_difference() 完成。

>>> A ^ B
{'b', 'f', 'e', 'a'}
>>> A.symmetric_difference(B)
{'b', 'f', 'e', 'a'}

 

三、集合的基本操作

1、add 添加元素

>>> s = {1, 2, 3, 4, 5, 6}
>>> s.add('s')
>>> s
{1, 2, 3, 4, 5, 6, 's'}

2、remove 移除元素(如果元素不存在,会引发 KeyError)

>>> s = {1, 2, 3, 4, 5, 6}
>>> s.remove(3)
>>> s
{1, 2, 4, 5, 6}
>>> s.remove(9)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 9

3、discard 移除元素(如果元素不存在,则不执行任何操作)

>>> s = {1, 2, 3, 4, 5, 6}
>>> s.discard(9)
>>> s
{1, 2, 3, 4, 5, 6}

4、pop 随机删除元素并返回(如果集合为空,会引发 KeyError)

>>> s = {1, 2, 3, 4, 5, 6}
>>> s.pop()  # pop删除时是无序的随机删除
1
>>> s
{2, 3, 4, 5, 6}

5、clear 清空集合

>>> s = {1, 2, 3, 4, 5, 6}
>>> s.clear()
>>> s
set()

 

四、集合与内置函数

下述内置函数通常作用于集合,来执行不同的任务。

函数 描述
all() 如果集合中的所有元素都是 True(或者集合为空),则返回 True。
any() 如果集合中的所有元素都是 True,则返回 True;如果集合为空,则返回 False。
enumerate() 返回一个枚举对象,其中包含了集合中所有元素的索引和值(配对)。
len() 返回集合的长度(元素个数)
max() 返回集合中的最大项
min() 返回集合中的最小项
sorted() 从集合中的元素返回新的排序列表(不排序集合本身)
sum() 返回集合的所有元素之和
 

 

参考文章:
https://www.cnblogs.com/suendanny/p/8597596.html
https://www.jianshu.com/p/95e912bfafaf
https://www.runoob.com/python3/python3-set.html

 

posted on   麦克煎蛋  阅读(214)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示