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实现简单HTML表格解析的方法
Jun 15 Python
Python的argparse库使用详解
Oct 09 Python
用python生成1000个txt文件的方法
Oct 25 Python
解决python 未发现数据源名称并且未指定默认驱动程序的问题
Dec 07 Python
python中bs4.BeautifulSoup的基本用法
Jul 27 Python
基于python进行抽样分布描述及实践详解
Sep 02 Python
Python 图像对比度增强的几种方法(小结)
Sep 25 Python
如何基于python操作json文件获取内容
Dec 24 Python
如何更改 pandas dataframe 中两列的位置
Dec 27 Python
python中shell执行知识点
May 06 Python
浅谈keras中Dropout在预测过程中是否仍要起作用
Jul 09 Python
python matplotlib工具栏源码探析三之添加、删除自定义工具项的案例详解
Feb 25 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
IIS7.X配置PHP运行环境小结
2011/06/09 PHP
php根据分类合并数组的方法实例详解
2013/11/06 PHP
PHP利用str_replace防注入的方法
2013/11/10 PHP
PHP程序员简单的开展服务治理架构操作详解(二)
2020/05/14 PHP
Aster vs Newbee BO5 第二场2.19
2021/03/10 DOTA
javascript在一段文字中的光标处插入其他文字
2007/08/26 Javascript
javascript数组使用调用方法汇总
2007/12/08 Javascript
javascript options属性集合操作代码
2009/12/28 Javascript
jQuery EasyUI API 中文文档 - Tree树使用介绍
2011/11/19 Javascript
jquery Tab效果和动态加载的简单实例
2013/12/11 Javascript
js面向对象的写法
2016/02/19 Javascript
AngularJS基础 ng-model 指令详解及示例代码
2016/08/02 Javascript
浅析使用BootStrap TreeView插件实现灵活配置快递模板
2016/11/28 Javascript
Bootstrap按钮组简单实现代码
2017/03/06 Javascript
浅谈Postman解决token传参的问题
2018/03/31 Javascript
Bootstrap Table列宽拖动的方法
2018/08/15 Javascript
微信小程序云开发之使用云数据库
2019/05/17 Javascript
解决Vue-Router升级导致的Uncaught (in promise)问题
2020/08/07 Javascript
[01:06:59]完美世界DOTA2联赛PWL S2 Magma vs FTD 第一场 11.29
2020/12/02 DOTA
Python实现绘制双柱状图并显示数值功能示例
2018/06/23 Python
python实现停车管理系统
2018/11/30 Python
对python中的控制条件、循环和跳出详解
2019/06/24 Python
matplotlib基础绘图命令之bar的使用方法
2020/08/13 Python
python3获取控制台输入的数据的具体实例
2020/08/16 Python
python如何调用php文件中的函数详解
2020/12/29 Python
python中添加模块导入路径的方法
2021/02/03 Python
澳大利亚一站式数码相机商店:CameraPro
2020/03/09 全球购物
药品采购员岗位职责
2014/02/08 职场文书
人民教师的自我评价分享
2014/02/21 职场文书
三方股东合作协议书范本
2014/09/28 职场文书
就业协议书盖章的注意事项
2014/09/28 职场文书
2014年后勤工作总结
2014/11/18 职场文书
总经理司机岗位职责
2015/04/10 职场文书
小学四年级作文之人物作文
2019/11/06 职场文书
Win11绿屏怎么办?Win11绿屏死机的解决方法
2021/11/21 数码科技
P站美图推荐——变身女主角特辑
2022/03/20 日漫