前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python集合操作

python集合操作

作者头像
不止于python
发布2023-09-05 14:17:38
1890
发布2023-09-05 14:17:38
举报
文章被收录于专栏:不止于python

集合定义

确定的无序的一组数据就是集合 集合中的值不会重复(唯一, 所有相同的数据只会保留一份) 集合中的元素没有任何顺序 集合中可以使用整数,浮点数,布尔值,复数,字符串,集合,冰冻集合等

集合基本操作

1. 创建空集合

变量 = set()

代码语言:javascript
复制
In [1]: s1 = set()
In [2]: s1
Out[2]: set()

2. 有数据(元素)的集合

单个元素或多个的元素的集合

变量 = {值,值....}

代码语言:javascript
复制
In [3]: s2 = {1}
In [4]: s2
Out[4]: {1}

In [5]: s3 = {1,2}
In [6]: s3
Out[6]: {1, 2}

3. 创建冰冻集合

冰冻集合一旦创建则不可以进行任何修改, 包括添加元素

3.1 空的冰冻集合

变量 = frozenset()

代码语言:javascript
复制
In [7]: s11 = frozenset()
In [8]: s11
Out[8]: frozenset()

3.2 有值的冰冻集合

变量 = frozenset(容器类数据)

代码语言:javascript
复制
In [107]: s22 = frozenset((1,2,3))
In [108]: s22
Out[108]: frozenset({1, 2, 3})

4. 成员检测

4.1 检测一个数据是否在集合中

值 in 集合

代码语言:javascript
复制
In [9]: s4 = {1,2,3}
In [10]: 1 in s4
Out[10]: True

In [11]: 11 in s4
Out[11]: False

4.2 检测一个数据是否不在集合中

值 not in 集合

代码语言:javascript
复制
In [12]: 1 not in s4
Out[12]: False

In [13]: 11 not in s4
Out[13]: True

集合常用函数操作

1. add(值): 向集合中添加一个元素

代码语言:javascript
复制
In [14]: s5 = {1}
In [15]: s5.add(1)
# 添加相同元素, 集合会自定去重
In [16]: s5.add(1)
In [17]: s5
Out[17]: {1}

2. pop(): 随机删除集合中的一个元素

代码语言:javascript
复制
In [18]: s5.pop()
Out[18]: 1

3. remove(值): 删除集合中的某个元素

值不存在报错

代码语言:javascript
复制
In [19]: s5 = {1,2,3}
In [20]: s5.remove(1)
In [21]: s5.remove(1)
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-21-340b41c1eeb6> in <module>
----> 1 s5.remove(1)
KeyError: 1

4. discard(值): 删除集合中的某个元素

值不存在不会报错

代码语言:javascript
复制
In [22]: s5.discard(2)
# 移除不存在的值不会报错
In [23]: s5.discard(2)
In [24]: s5
Out[24]: {3}

5. clear(): 清空集合

代码语言:javascript
复制
In [25]: s5
Out[25]: {3}
In [26]: s5.clear()
In [27]: s5
Out[27]: set()

6. copy(): 复制集合

代码语言:javascript
复制
In [28]: s5 = {1,2,3}
In [29]: s6 = s5.copy()
In [30]: s6
Out[30]: {1, 2, 3}

7. difference(集合): 差集

获取存在于集合1但是不存在于集合2中的数据的集合

代码语言:javascript
复制
In [31]: s7 = {1,2,3}
In [32]: s8 = {2,3,4}
In [33]: s7.difference(s8)
Out[33]: {1}

8. difference_update(集合): 移除两个集合都存在的元素

直接在原集合上修改, 没有返回值

代码语言:javascript
复制
In [34]: s7.difference_update(s8)
In [35]: s7
Out[35]: {1}

9. intersection(集合): 交集

获取即存在于集合1又存在于集合2中的数据组成的集合

代码语言:javascript
复制
In [36]: s7 = {1,2,3}
In [37]: s8 = {2,3,4}
In [38]: s7.intersection(s8)
Out[38]: {2, 3}

10. intersection_update(集合): 交集更新

移除集合1中不存在于集合2中的元素, 直接在原集合上修改, 没有返回值

代码语言:javascript
复制
In [41]: s7.intersection_update(s8)
In [42]: s7
Out[42]: {2, 3}

11. union(集合): 并集

将集合1和集合2中所有数据新建一个集合(去重)

代码语言:javascript
复制
In [43]: s8 = {2,3,4}
In [44]: s7 = {1,2,3}
In [45]: s7.union(s8)
Out[45]: {1, 2, 3, 4}

12. update(集合): 并集更新

将集合1和集合2中所有数据新建一个集合(去重)

代码语言:javascript
复制
In [46]: s7.update(s8)
In [47]: s7
Out[47]: {1, 2, 3, 4}

13. issuperset(集合): 检测一个集合是不是另外一个集合的超集

就是检测集合2中的元素是否在都集合1中

代码语言:javascript
复制
In [49]: s7 = {1,2,3}
In [50]: s8 = {2,3,4}
In [51]: s9 = {2,3}

In [52]: s7.issuperset(s8)
Out[52]: False

In [53]: s7.issuperset(s9)
Out[53]: True

14. issubset(集合): 检测一个集合是不是另外一个集合的子集

检测集合1的元素是否在集合2中

代码语言:javascript
复制
In [58]: s7 = {1,2,3}
In [59]: s8 = {4,5,6}
In [60]: s9 = {2,3}

In [61]: s9.issubset(s7)
Out[61]: True

In [62]: s9.issubset(s8)
Out[62]: False

15. isdisjoint(集合): 检测2个集合是否不相交

两个集合没有重复的元素

代码语言:javascript
复制
In [63]: s7.isdisjoint(s9)
Out[63]: False

In [64]: s8.isdisjoint(s9)
Out[64]: True

16. symmetric_difference(集合): 对称差集操作

返回两个集合中不重复的元素集合

代码语言:javascript
复制
In [65]: s7.symmetric_difference(s9)
Out[65]: {1}

In [66]: s8.symmetric_difference(s9)
Out[66]: {2, 3, 4, 5, 6}

17. symmetric_difference_update(集合): 对称差集更新操作

在原始集合1中移除与集合2中的重复元素,并将不重复的元素插入到集合1中

代码语言:javascript
复制
In [67]: s7.symmetric_difference_update(s9)
In [68]: s7
Out[68]: {1}

In [69]: s8.symmetric_difference_update(s9)
In [70]: s8
Out[70]: {2, 3, 4, 5, 6}

18. len(集合): 集合长度

代码语言:javascript
复制
In [71]: s9
Out[71]: {2, 3}

In [72]: len(s9)
Out[72]: 2

19. max(集合): 集合中的最大值

代码语言:javascript
复制
In [74]: max(s9)
Out[74]: 3

20. min(集合): 集合中的最小值

代码语言:javascript
复制
In [73]: min(s9)
Out[73]: 2

21. sum(集合): 计算列中所有元素的和

代码语言:javascript
复制
In [75]: sum(s9)
Out[75]: 5

集合推导式

1. 简单的集合推导式

格式:{变量可以操作 for 变量 in 集合}

结果:遍历集合中的每个值,将每个值获取之后组成新的集合, 可以对获取的值进行修改

代码语言:javascript
复制
In [76]: s1 = {1,2,3}
In [77]: s2 = {i for i in s1}
In [78]: s2
Out[78]: {1, 2, 3}

2. 带有判断条件的集合推导式

格式:{变量 for 变量 in 集合 if 条件表达式}

结果:遍历集合中的每个值,根据判断条件决定是否取出指定的值组成新的集合,可以对获取的值进行修改

代码语言:javascript
复制
In [79]: s3 = {i for i in s1 if i > 2}
In [80]: s3
Out[80]: {3}

3. 多个集合的同时循环的集合推导式

变量1和变量2可以进行其它计算或操作 新的集合中元素个数=集合1中元素个数 * 集合2中的元素个数

格式:{变量1+变量2 for 变量1 in 集合1 for 变量2 in 集合2}

结果:同时遍历集合1和集合2中的每个值,将集合1中的每个值和集合2中的每个值进行运算得到新的集合

代码语言:javascript
复制
In [81]: s1 = {1,2,3}
In [82]: s2 = {1,2,3}
In [83]: s3 = {(i, ii) for i in s1 for ii in s2}
In [84]: s3
Out[84]: {(1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3), (3, 1), (3, 2), (3, 3)}

4. 带有判断条件的多个集合的同时循环集合推导式

新的集合数量由判断条件决定 = 符合条件的剩余的集合1个数 * 符合条件的剩余的集合2个数

格式:{变量1+变量2 for 变量1 in 集合1 for 变量2 in 集合2 if 条件表达式}

结果:同时遍历集合1和集合2中的每个值,根据判断条件将集合1中的值和集合2中的值进行运算,得到新的集合

代码语言:javascript
复制
In [91]: s4 = {(i,ii) for i in s1 for ii in s2 if i > 1 and ii > 1}
In [92]: s4
Out[92]: {(2, 2), (2, 3), (3, 2), (3, 3)}

In [96]: s5 = {(i,ii) for i in s1 for ii in s2 if i > 2 and ii > 2}
In [97]: s5
Out[97]: {(3, 3)}
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-07-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 不止于python 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档