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实现统计文本文件字数的方法
May 05 Python
Python实现的桶排序算法示例
Nov 29 Python
python测试mysql写入性能完整实例
Jan 18 Python
PyCharm配置mongo插件的方法
Nov 30 Python
在python3中pyqt5和mayavi不兼容问题的解决方法
Jan 08 Python
Python实现 PS 图像调整中的亮度调整
Jun 28 Python
树莓派3 搭建 django 服务器的实例
Aug 29 Python
解决安装pyqt5之后无法打开spyder的问题
Dec 13 Python
Python基础之字典常见操作经典实例详解
Feb 26 Python
Python进程的通信Queue、Pipe实例分析
Mar 30 Python
python读取xml文件方法解析
Aug 04 Python
python3处理word文档实例分析
Dec 01 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编程与应用
2006/10/09 PHP
smarty模板中使用get、post、request、cookies、session变量的方法
2014/04/24 PHP
Symfony2在Nginx下的配置方法图文教程
2016/02/04 PHP
PHP入门教程之操作符与控制结构流程详解
2016/09/09 PHP
laravel-admin表单提交隐藏一些数据,回调时获取数据的方法
2019/10/08 PHP
Laravel Eloquent ORM 实现查询表中指定的字段
2019/10/17 PHP
确保Laravel网站不会被嵌入到其他站点中的方法
2019/10/18 PHP
JS解密入门之凭直觉解
2008/06/25 Javascript
有关于JS构造函数的重载和工厂方法
2013/04/07 Javascript
jquery ui对话框实例代码
2013/05/10 Javascript
jquery固定底网站底部菜单效果
2013/08/13 Javascript
jQuery中iframe的操作(点击按钮新增窗口)
2016/04/20 Javascript
微信JS-SDK实现微信会员卡功能(给用户微信卡包里发送会员卡)
2019/07/25 Javascript
uni-app自定义导航栏按钮|uniapp仿微信顶部导航条功能
2019/11/12 Javascript
[02:30]联想杯DOTA2完美世界全国高校联赛—北京站现场
2015/11/16 DOTA
python基础教程之基本数据类型和变量声明介绍
2014/08/29 Python
利用Python的装饰器解决Bottle框架中用户验证问题
2015/04/24 Python
Python标准库之collections包的使用教程
2017/04/27 Python
基于pandas数据样本行列选取的方法
2018/04/20 Python
python实现飞机大战
2018/09/11 Python
详解Django将秒转换为xx天xx时xx分
2019/09/27 Python
Python模块汇总(常用第三方库)
2019/10/07 Python
Python处理mysql特殊字符的问题
2020/03/02 Python
详解python 支持向量机(SVM)算法
2020/09/18 Python
python抢购软件/插件/脚本附完整源码
2021/03/04 Python
Html5移动端div固定到底部实现底部导航条的几种方式
2021/03/09 HTML / CSS
电子商务网站的创业计划书
2014/01/05 职场文书
幸福家庭事迹材料
2014/02/03 职场文书
物流管理毕业生自荐信范文
2014/03/15 职场文书
机关党员三严三实心得体会
2014/10/13 职场文书
2014年财政所工作总结
2014/11/22 职场文书
个人廉洁自律总结
2015/03/06 职场文书
新店开张宣传语
2015/07/13 职场文书
小学作文之描写天气
2019/08/15 职场文书
Python基于Tkinter开发一个爬取B站直播弹幕的工具
2021/05/06 Python
SpringBoot2零基础到精通之数据库专项精讲
2022/03/22 Java/Android