博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python集合
阅读量:6693 次
发布时间:2019-06-25

本文共 2905 字,大约阅读时间需要 9 分钟。

集合(set)和字典(dict)类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。

定义一个集合需要一个列表(list)作为输入集合:

list_1 = set([15,44,789,45,65,87])print(list_1,type(list_1))#{65, 44, 45, 15, 789, 87} 

 自带重复元素过滤

list_1 = set([15,44,789,45,789,65,87,87])print(list_1,type(list_1))#{65, 44, 45, 15, 789, 87} 

 基本操作

添加 add(key)

list_3 =set([1101,1102,1103])list_3.add(899)print(list_3)#{899, 1101, 1102, 1103}

 添加多项 update(list)

list_3 =set([1101,1102,1103])list_3.update([899,810,827])print(list_3)#{899, 810, 1101, 1102, 1103, 827}

 删除 remove(key)

list_3 =set([1101,1102,1103])list_3.remove(1101)print(list_3)#{1102, 1103}

如果要删除一个不存在的元素会报错

list_3 =set([1101,1102,1103])list_3.remove(1201)####################Traceback (most recent call last):  File "E:/pywww/day02/04.py", line 26, in 
list_3.remove(1201)KeyError: 1201

 可以使用另外一种方法 discard

list_3 =set([1101,1102,1103]) print(list_3.discard(1101))#None print(list_3.discard(1201))#None print(list_3)#{1102, 1103}

 discard 没有返回值

统计长度len(s)

list_3 =set([1101,1102,1103])print(len(list_3))#3

 成员判断 in not in

list_3 =set([1101,1102,1103])print(1101 in list_3)#Trueprint(1109 in list_3)#Falseprint(1101 not in list_3)#Falseprint(1109 not in list_3)#True

 

关系操作

集合交集 intersection

求两个集合中相同的key

list_1 = set([15,44,789,45,789,65,87,87])list_2 = set([5,789,64,38,62,56,45])print(list_1.intersection(list_2))#{789, 45}

 集合并集 union

求两个集合去重后的key的集合

list_1 = set([15,44,789,45,789,65,87,87])list_2 = set([5,789,64,38,62,56,45])print(list_1.union(list_2))#{64, 65, 5, 38, 44, 45, 15, 789, 87, 56, 62}

 

集合差集 difference

查找 list_1中 在 list_2 里面没有的key

list_1 = set([15,44,789,45,789,65,87,87])list_2 = set([5,789,64,38,62,56,45])print(list_1.difference(list_2))#{65, 44, 87, 15}

 

集合子集

list_1 = set([15,44,789,45,789,65,87,87])list_2 = set([5,789,64,38,62,56,45])list3 = set([15,789,65])print(list3.issubset(list_1))#Trueprint(list_2.issubset(list_1))#False

 

集合父集

list_1 = set([15,44,789,45,789,65,87,87])list_2 = set([5,789,64,38,62,56,45])list3 = set([15,789,65])print(list_1.issuperset(list3))#Trueprint(list_1.issuperset(list_2))#False

对称差集

两个集合中互相都没有的key的集合

list_1 = set([15,44,789,45,789,65,87,87])list_2 = set([5,789,64,38,62,56,45])print(list_2.symmetric_difference(list_1))#{64, 65, 5, 15, 87, 38, 44, 56, 62}

 判断两个集合是否有交集

list_1 = set([15,44,789,45,789,65,87,87,1101])list_2 = set([5,789,64,38,62,56,45])list_3 =set([1101,1102,1103])print(list_2.isdisjoint(list_3))#Trueprint(list_1.isdisjoint(list_3))#False

 运算符

list_1 = set([15,44,789,45,789,65,87,87,1101])list_2 = set([5,789,64,38,62,56,45])list_3 =set([1101,1102,1103])

 

交集 &

print(list_1 & list_2)#{789, 45}

 并集 |

print(list_1| list_2)#{64, 65, 5, 38, 44, 1101, 45, 15, 789, 87, 56, 62}

 差集 -

print(list_1 - list_2)#{65, 44, 1101, 87, 15}

 在list_1 中不在list_2中的key

对称差集 ^

print(list_1 ^ list_2)#{64, 65, 5, 38, 87, 56, 44, 1101, 62, 15}

 项在 list_1 或 list_2 中,但不会同时出现在二者中

 

转载于:https://www.cnblogs.com/qing-chen/p/7201561.html

你可能感兴趣的文章
C# extern 修饰符的用法
查看>>
Zabbix修正错误两例(只提供解决思路)
查看>>
Redhat6.X 配置HP3PAR7200存储多路径过程
查看>>
Java基础系列19:使用JXL或者POI生成和解析Excel文件
查看>>
【NetApp】console和SP的相互切换
查看>>
301错误_302错误_404错误_500错误等
查看>>
PHP内核介绍及扩展开发指南—Extensions 的编写
查看>>
修改grub2安装双系统的windows引导
查看>>
zabbix 自定义邮件报警
查看>>
DNS服务器原理及架设
查看>>
我的友情链接
查看>>
剑指offer:矩阵中的路径
查看>>
数据库
查看>>
五步搞定Android开发环境部署——非常详细的Android开发环境搭建教程
查看>>
H.264视频开发技术
查看>>
Java学习笔记—第十一章 多线程机制
查看>>
Ext.MessageBox消息框
查看>>
网络排查常用命令
查看>>
C#设计模式系列:桥接模式(Bridge)
查看>>
Web性能优化:图片优化
查看>>