Python集合操作方法详解


Posted in Python onFebruary 09, 2020

集合是无序的,天生不重复的数据组合,它的作用如下:

  • 去重,即:把一个列表变成集合,就去重了
  • 关系测试,即:测试两组集合的交集、并集和差集等

一、集合常用方法总结

Python集合操作方法详解

二、定义

1、语法

>>> name_1 = [1,2,3,4,7,8,7,10]
#把列表转换为集合
>>> name_1 = set(name_1)
#转换后,去重
>>> print(name_1,type(name_1))
{1, 2, 3, 4, 7, 8, 10} <class 'set'>

 三、关系测试

1、交集(intersection())

>>> name_1 = [1,2,3,4,7,8,7,10]
>>> name_2 = [1,3,5,8,10]
>>> name_1 = set(name_1)
>>> name_2 = set(name_2)
#输出结果
>>> name_1.intersection(name_2)
{8, 1, 10, 3}

2、并集(union())

>>> name_1 = [1,2,3,4,7,8,7,10]
>>> name_2 = [1,3,5,8,10]
>>> name_1 = set(name_1)
>>> name_2 = set(name_2)
#输出结果
>>> name_1.union(name_2)
{1, 2, 3, 4, 5, 7, 8, 10}

 3、差集(difference())

>>> name_1 = [1,2,3,4,7,8,7,10]
>>> name_2 = [1,3,5,8,10]
>>> name_1 = set(name_1)
>>> name_2 = set(name_2)
#输出结果
>>> name_1.difference(name_2)
{2, 4, 7}

 特别提示:差集取的是数值在第一个集合中,但是不在第二个集合中(在我不在你)

4、issubset()

判断一个集合是否是另一个集合的子集

>>> name_1 = [1,2,3,4,7,8,7,10]
>>> name_3 = [1,2,3,4]
>>> name_1 = set(name_1)
>>> name_3 = set(name_3)
#输出结果
>>> name_3.issubset(name_1)
True

 5、issuperset()

判断一个集合是否是另一个集合的父集

>>> name_1 = [1,2,3,4,7,8,7,10]
>>> name_3 = [1,2,3,4]
>>> name_1 = set(name_1)
>>> name_3 = set(name_3)
#输出结果
>>> name_1.issuperset(name_3)
True

 6、对称差集(symmetric_difference())

 把两个集合没有交集的数值取出来

>>> name_1 = [1,2,3,4,7,8,7,10]
>>> name_2 = [1,3,5,8,10]
>>> name_1 = set(name_1)
>>> name_2 = set(name_2)
#输出结果
>>> name_1.symmetric_difference(name_2)
{2, 4, 5, 7}

 7、isdisjoint()

判断两个集合是否有交集,没有交集,则返回True

>>> name_1 = [1,2,3,4,7,8,7,10]
>>> name_2 = [1,3,5,8,10]
>>> name_3 = [11]
>>> name_1 = set(name_1)
>>> name_2 = set(name_2)
>>> name_3 = set(name_3)
#有交集
>>> name_1.isdisjoint(name_2)
False
#无交集
>>> name_1.isdisjoint(name_3)
True

 四、关系测试(特殊符号)

1、交集(&)

>>> name_1 = [1,2,3,4,7,8,7,10]
>>> name_2 = [1,3,5,8,10]
>>> name_1 = set(name_1)
>>> name_2 = set(name_2)
#结果输出
>>> name_1 & name_2
{8, 1, 10, 3}

2、并集(|)

>>> name_1 = [1,2,3,4,7,8,7,10]
>>> name_2 = [1,3,5,8,10]
>>> name_1 = set(name_1)
>>> name_2 = set(name_2)
#结果输出
>>> name_1 | name_2
{1, 2, 3, 4, 5, 7, 8, 10}

 3、差集(-)

>>> name_1 = [1,2,3,4,7,8,7,10]
>>> name_2 = [1,3,5,8,10]
>>> name_1 = set(name_1)
>>> name_2 = set(name_2)
#结果输出
>>> name_1 - name_2
{2, 4, 7}

4、对称差集(^)

>>> name_1 = [1,2,3,4,7,8,7,10]
>>> name_2 = [1,3,5,8,10]
>>> name_1 = set(name_1)
>>> name_2 = set(name_2)
#输出
>>> name_1 ^ name_2
{2, 4, 5, 7}

5、是否是子集(<=)

>>> name_1 = [1,2,3,4,7,8,10]
>>> name_3 = [1,2,3,4]
>>> name_1 = set(name_1)
>>> name_3 = set(name_3)
#输出
>>> name_3 <= name_1
True

6、是否是父集(>=)

>>> name_1 = [1,2,3,4,7,8,10]
>>> name_3 = [1,2,3,4]
>>> name_1 = set(name_1)
>>> name_3 = set(name_3)
#输出
>>> name_1 >= name_3
True

 五、基本操作

1、添加(add())

>>> name_2 = [1,3,5,8,10]
>>> name_2 = set(name_2)
#添加已存在,不报错
>>> name_2.add(1)
>>> name_2
{8, 1, 10, 3, 5}
#添加不存在,添加一个新的数值
>>> name_2.add(11)
>>> name_2
{1, 3, 5, 8, 10, 11}

 2、添加多项(update())

>>> name_2 = [1,3,5,8,10]
>>> name_2 = set(name_2)
>>> name_2.update([12,13,14])
#输出结果
>>> name_2
{1, 3, 5, 8, 10, 12, 13, 14}

 3、删除(remove(),pop(),discard())

①remove()

>>> name_2 = [1,3,5,8,10]
>>> name_2 = set(name_2)
>>> name_2
{8, 1, 10, 3, 5}
>>> name_2.remove(1)
#输出
>>> name_2
{8, 10, 3, 5}
#删除不存在的元素,会报错
>>> name_2.remove(1)
Traceback (most recent call last):
 File "<input>", line 1, in <module>
KeyError: 1

 特别提示:用remove删除时,当元素不存在,会报错

②pop()

>>> name_2 = [1,3,5,8,10]
>>> name_2 = set(name_2)
>>> name_2
{8, 1, 10, 3, 5}
#输出
>>> name_2.pop()
8

 特别提示:pop是随机删除集合中的某个元素,并且打印

③discard()

>>> name_2 = [1,3,5,8,10]
>>> name_2 = set(name_2)
>>> name_2.discard(10)
#输出结果
>>> name_2
{8, 1, 3, 5}
#删除不存在元素,不报错
>>> name_2.discard(10)

特别提示:用discard删除不存在的元素,不会出现报错

4、长度(len())

>>> name_1 = [1,2,3,4,7,8,7,10]
>>> name_1 = set(name_1)
#结果输出
>>> len(name_1)
7

 5、x in s

测试 x 是否是 s 的成员

>>> name_1 = [1,2,3,4,7,8,7,10]
>>> name_1 = set(name_1)
#结果输出
>>> 1 in name_1
True

 6、x not in s

测试 x 是否不是 s 的成员

>>> name_1 = [1,2,3,4,7,8,7,10]
>>> name_1 = set(name_1)
#输出
>>> 12 not in name_1
True

更多关于Python集合操作方法可查看下面的相关链接

Python 相关文章推荐
Python strip lstrip rstrip使用方法
Sep 06 Python
Python算法之图的遍历
Nov 16 Python
Python Xml文件添加字节属性的方法
Mar 31 Python
对Python Pexpect 模块的使用说明详解
Feb 14 Python
Python自动抢红包教程详解
Jun 11 Python
pyinstaller 3.6版本通过pip安装失败的解决办法(推荐)
Jan 18 Python
Python开发之pip安装及使用方法详解
Feb 21 Python
简单了解Python多态与属性运行原理
Jun 15 Python
详解查看Python解释器路径的两种方式
Oct 15 Python
Django前后端分离csrf token获取方式
Dec 25 Python
python实现杨辉三角的几种方法代码实例
Mar 02 Python
python 判断文件或文件夹是否存在
Mar 18 Python
Python字符编码转码之GBK,UTF8互转
Feb 09 #Python
Python基础之字符串操作常用函数集合
Feb 09 #Python
python连接PostgreSQL过程解析
Feb 09 #Python
Python +Selenium解决图片验证码登录或注册问题(推荐)
Feb 09 #Python
python+selenium定时爬取丁香园的新型冠状病毒数据并制作出类似的地图(部署到云服务器)
Feb 09 #Python
python 爬取疫情数据的源码
Feb 09 #Python
python代码如何实现余弦相似性计算
Feb 09 #Python
You might like
社区(php&amp;&amp;mysql)四
2006/10/09 PHP
探讨如何把session存入数据库
2013/06/07 PHP
CI框架常用函数封装实例
2016/11/21 PHP
php实现产品加入购物车功能(1)
2020/07/23 PHP
PHP实现的Redis多库选择功能单例类
2017/07/27 PHP
JS 继承实例分析
2008/11/04 Javascript
如何将JS的变量值传递给ASP变量
2012/12/10 Javascript
javascript面向对象之共享成员属性与方法及prototype关键字用法
2015/01/13 Javascript
JS区分浏览器页面是刷新还是关闭
2016/04/17 Javascript
JS导出PDF插件的方法(支持中文、图片使用路径)
2016/07/12 Javascript
JS表格组件BootstrapTable行内编辑解决方案x-editable
2016/09/01 Javascript
原生js实现放大镜效果
2017/01/11 Javascript
原生js实现打字动画游戏
2017/02/04 Javascript
微信小程序使用audio组件播放音乐功能示例【附源码下载】
2017/12/08 Javascript
vue中前进刷新、后退缓存用户浏览数据和浏览位置的实例讲解
2018/09/21 Javascript
云服务器部署Node.js项目的方法步骤(小白系列)
2020/03/23 Javascript
Ant Design Vue table中列超长显示...并加提示语的实例
2020/10/31 Javascript
Python数据类型详解(三)元祖:tuple
2016/05/08 Python
解决Django的request.POST获取不到内容的问题
2018/05/28 Python
使用Python实现一个栈判断括号是否平衡
2018/08/23 Python
用Python将结果保存为xlsx的方法
2019/01/28 Python
Django数据库类库MySQLdb使用详解
2019/04/28 Python
Python FtpLib模块应用操作详解
2019/12/12 Python
python 微信好友特征数据分析及可视化
2020/01/07 Python
Python动态导入模块和反射机制详解
2020/02/18 Python
pycharm 配置svn的图文教程(手把手教你)
2021/01/15 Python
CSS3 Pie工具推荐--让IE6-8支持一些优秀的CSS3特性
2014/09/02 HTML / CSS
美国克罗格超市在线购物:Kroger
2019/06/21 全球购物
护士实习生自我鉴定范文
2013/12/10 职场文书
教师节促销方案
2014/03/22 职场文书
中国汉字听写大会观后感
2015/06/02 职场文书
保护环境建议书作文500字
2015/09/14 职场文书
2015年教师党员个人总结
2015/11/24 职场文书
详解SpringBoot异常处理流程及原理
2021/06/21 Java/Android
MySQL的索引你了解吗
2022/03/13 MySQL
Python matplotlib绘制条形统计图 处理多个实验多组观测值
2022/04/21 Python