引言

set(集合)虽然用的很少,但它是一个无序的不重复元素序列,用来简单的去重挺快的。

集合的定义

  • set(集合) 与列表类似,不同之处在于集合的 元素不重复
  • 集合和字典一样也是用 {} 定义,但元素之间使用 , 分隔,或者使用 set()

{ } 定义

#!/usr/bin/python3
# -*- coding:utf-8 -*-name_set = {'hui', 'wang', 'zack', 'hui'}print(name_set)     # 结果为 {'hui', 'wang', 'zack'}name_set = set('hui', 'wang', 'zack', 'hui')

set() 定义

set() 只接受一个参数

In [13]: name_set = set('hui')In [14]: name_set
Out[14]: {'h', 'i', 'u'}In [15]: name_set = set(['hui', 'wang', 'zack', 'hui'])In [16]: name_set
Out[16]: {'hui', 'wang', 'zack'}

注意:空集合不能用 s = {} 来定义这样默认是字典,应该 s = set()

In [27]: s = {}In [28]: s1 = set()In [29]: type(s)
Out[29]: dictIn [30]: type(s1)
Out[30]: set

集合常用操作

集合所有内置方法如下:

方法太多我选几个常用的测试一下。

集合添加元素

使用 add() 即可向集合中添加元素

In [33]: s = set()In [34]: s.add(1)In [35]: s.add(4)In [36]: s.add(3)In [37]: s
Out[37]: {1, 3, 4}In [38]: s.add(2)In [39]: s
Out[39]: {1, 2, 3, 4}

集合移除元素

  • remove() 移除集合中的元素,且如果元素不存在,会报错
  • discard() 移除集合中的元素,且如果元素不存在,不会发生错误
  • pop() 随机移除集合内的一个元素
In [38]: # remove() 移除
In [39]: s
Out[39]: {1, 2, 3, 4}In [40]: s.remove(3)In [41]: s
Out[41]: {1, 2, 4}In [42]: s.remove(5)
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-42-9ec04578636f> in <module>
----> 1 s.remove(5)KeyError: 5
In [45]: # discard() 移除In [46]: s
Out[46]: {1, 2, 4}In [47]: s.discard(4)In [48]: s
Out[48]: {1, 2}In [49]: s.discard(3)In [50]: s
Out[50]: {1, 2}
In [56]: # pop() 随机移除In [57]: s.pop()
Out[57]: 1In [58]: s
Out[58]: {2, 3, 9, 'hui'}In [59]: s.pop()
Out[59]: 2In [60]: s
Out[60]: {3, 9, 'hui'}

其实set 集合的 pop方法会将集合的左边第一个元素进行删除,并返回删除的元素。

集合统计、清空元素

  • len() 统计集合元素个数
  • clear() 清空集合
In [68]: name_set
Out[68]: {'wang', 'zack'}In [69]: len(name_set)
Out[69]: 2In [71]: name_set.clear()In [72]: len(name_set)
Out[72]: 0In [73]: name_set
Out[73]: set()

集合元素获取(遍历)

集合不支持索引,也没有方法进行获取,因此只能采用 for ... in ... 遍历方式获取元素。


In [81]: name_set
Out[81]: {'hui', 'wang', 'zack'}In [82]: for name in name_set:...:     print(name)...:
hui
wang
zackIn [83]: name_set[0]
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-83-c0ead6d21f1d> in <module>
----> 1 name_set[0]TypeError: 'set' object is not subscriptable

集合之间的运算

集合差运算 -

In [89]: a = {1, 2, 3, 4, 5}In [90]: b = {1, 2, 3, 6}In [91]: a - b
Out[91]: {4, 5}In [92]: b - a
Out[92]: {6}In [93]: a.difference(b)
Out[93]: {4, 5}In [94]: b.difference(a)
Out[94]: {6} 
  • a - b 就相当于在 a 中去除跟 b 相同的元素
  • b - a 也就是在 b 中去除跟 a 相同的元素
  • a - b 等同于 a.difference(b)

集合并运算 |

In [95]: a
Out[95]: {1, 2, 3, 4, 5}In [96]: b
Out[96]: {1, 2, 3, 6}In [97]: a | b
Out[97]: {1, 2, 3, 4, 5, 6}

集合交运算 &

In [99]: a
Out[99]: {1, 2, 3, 4, 5}In [100]: b
Out[100]: {1, 2, 3, 6}In [101]: a & b
Out[101]: {1, 2, 3}

集合异或运算 ^

In [102]: a
Out[102]: {1, 2, 3, 4, 5}In [103]: b
Out[103]: {1, 2, 3, 6}In [104]: a ^ b
Out[104]: {4, 5, 6}

a, b 集合中的相同元素都去掉,剩下的就是 ^ 异或运算的结果。

应用场景

普通for循环去重

In [1]: li = [2, 1, 3, 6, 2, 1]In [2]: temp = []In [3]: for i in li:...:     if i not in temp:...:         temp.append(i)...:In [4]: li
Out[4]: [2, 1, 3, 6, 2, 1]In [5]: temp
Out[5]: [2, 1, 3, 6]

利用集合简单去重

In [106]: li = [1, 2, 2, 3, 3, 5]In [107]: li = set(li)In [108]: li
Out[108]: {1, 2, 3, 5}In [109]: type(li)
Out[109]: setIn [110]:

这样把原来的列表类型变成了集合类型,这样更不好操作,这样不是想要的结果。

因此要做到 去重加类型不变,只要再嵌套一个list() 即可

In [110]: li = [1, 2, 2, 3, 3, 5]In [111]: li = list(set(li))In [112]: li
Out[112]: [1, 2, 3, 5]In [113]: type(li)
Out[113]: listIn [114]:

去重保持原来的顺序

使用 sort + set 去重


In [6]: list1 = [2, 1, 3, 6, 2, 1]In [7]: list2 = list(set(list1))In [8]: list2
Out[8]: [1, 2, 3, 6]In [9]: list2.sort(key=list1.index)In [10]: list2
Out[10]: [2, 1, 3, 6]

使用 sorted + set 去重

In [12]: list1 = [2, 1, 3, 6, 2, 1]In [13]: temp = sorted(set(list1), key=list1.index)In [14]: temp
Out[14]: [2, 1, 3, 6]

尾语

✍ 用 Code 谱写世界,让生活更有趣。❤️

✍ 万水千山总是情,点赞再走行不行。❤️

✍ 码字不易,还望各位大侠多多支持。❤️

Python 集合 — set相关推荐

  1. python集合(set)+常见方法+交叉并补

    python集合(set)+常见方法+交叉并补 集合的定义 定义:由不同元素组成的集合,集合是一组无序排列 可hash值,可作为字典的key. 特性:集合的目的是将不同的值存放在一起,不同的集合间用来 ...

  2. Python集合之set()使用方法详解

    set是一个无序且不重复的元素集合,它有可变集合(set())和不可变集合(frozenset)两种,可以对set()集合进行创建.添加.删除.交集.并集和差集的操作,非常实用,以下是具体用法: 一. ...

  3. excel调用python编程-使用python集合进行EXCEL数据分析

    使用python集合进行EXCEL数据分析 标准库 Python真正精彩的方面之一是它具有非常丰富的模块标准库 ,无需安装第三方模块即可进行一些复杂的编程. 如果您在系统上有效安装了python,则可 ...

  4. python集合的并集、交集_Python 集合set()添加删除、交集、并集、集合操作详解

    1.在Python中set是基本数据类型的一种集合类型,它有可变集合(set())和不可变集合(frozenset)两种.创建集合set.集合set添加.集合删除.交集.并集.差集的操作都是非常实用的 ...

  5. python空集_玩转Python集合,这一篇就够了!

    原标题:玩转Python集合,这一篇就够了! 点上方蓝色" 菜鸟学Python",选" 星标"公众号 重磅干货,第一时间送到 选自DataCamp, 作者:Mi ...

  6. python集合运算_Python 集合set()添加删除、交集、并集、集合操作详解

    在Python set是基本数据类型的一种集合类型,它有可变集合(set())和不可变集合(frozenset)两种.创建集合set.集合set添加.集合删除.交集.并集.差集的操作都是非常实用的方法 ...

  7. python集合的操作_Python集合操作方法详解

    集合是无序的,天生不重复的数据组合,它的作用如下: 去重,即:把一个列表变成集合,就去重了 关系测试,即:测试两组集合的交集.并集和差集等 一.集合常用方法总结 二.定义 1.语法 >>& ...

  8. python中集合运算_入门 | 一文带你了解Python集合与基本的集合运算

    原标题:入门 | 一文带你了解Python集合与基本的集合运算 选自DataCamp 作者:Michael Galarnyk 参与:Geek Ai.思源 一般我们熟悉 Python 中列表.元组及字典 ...

  9. python set集合_玩转Python集合,这一篇就够了!

    点击 机器学习算法与Python学习 ,选择加星标 精彩内容不迷路 选自DataCamp, 作者:Michael Galarnyk 本文由机器之心编译 了解 Python 集合: 它们是什么,如何创建 ...

  10. python集合输出_Python集合操作方法详解

    集合是无序的,天生不重复的数据组合,它的作用如下: 去重,即:把一个列表变成集合,就去重了 关系测试,即:测试两组集合的交集.并集和差集等 一.集合常用方法总结 二.定义 1.语法 >>& ...

最新文章

  1. 8279键盘扫描c语言程序,8279键盘显示C程序
  2. C++ #pragma comment语法(预处理指令)
  3. 【C语言】二维数组遍历的3种方式
  4. 软件工程概论课堂作业3
  5. android xml 解析
  6. MIP 与 AMP 合作进展(3月7日)
  7. javascript 定时跳转页面
  8. L1-8 估值一亿的AI核心代码 (20 分)
  9. 异常为当IDENTITY_INSERT设置为OFF时 解决办法
  10. 软件测试流程、测试过程模型(V、W)
  11. 用PL/SQL判断一个FTP服务器上的文件是否存在
  12. excel小技巧之--自定义序列
  13. 高通芯片校准中的RGI、ICQ是什么意思,校准的特征化是什么意思?(转)
  14. .NET 6 RC2 版本发布
  15. 基于hyperleger fabric区块链的校园化妆品交易平台搭建
  16. 刮刮卡 vue canvas
  17. idea下的新建的index.jsp访问不到404
  18. 微信与php什么区别,微信小店和微信小程序的区别是什么?
  19. 免费无需魔法会语音聊天的ChatGPT
  20. [SUCTF 2019]CheckIn

热门文章

  1. Web前端之JavaScript基础
  2. 微表情数据集汇总(全)
  3. Linux配置SSH免密码登录(非root账号)
  4. 笔记-CTA认证需要的操作, 应用可卸载, 系统还原后应用重装--Camera模块
  5. IT项目经理如何学习
  6. 开箱即用!使用Rancher 2.3 启用Istio初体验
  7. python 逆序_python中逆序
  8. 离职“招黑”的6种行为,最后一个太惹人反感!
  9. Windows2012R2,2008R2 Internet时间无法同步成功解决方案
  10. 记一次quartz定时任务不执行排雷