python特效集合_python 集合操作方法详解
说集合之前,我们先说一个小例子,假设某公司有五个人喜欢打篮球,五个人喜欢打游戏,问即打游戏有打篮球
的人都有哪些?
play_basketball = ['a','b','c','d','e']
play_game = ['a','b','c','f','g']
both_play=[]
for name in play_basketball:
if name in play_game:
both_play.append(name)
print(both_play)
结果:
['a', 'b', 'c']
在不了解集合之前我们肯定以上面的方法解决问题,但是学了集合之后,我们就有更简单的方法了,是什么呢?让我们慢慢了解。
集合set
集合用于包含一组无序的对象。与列表和元组不同,集合是无序的,也无法通过数字进行索引。此外,集合中的元素不能重复。set和dict一样,只是没有value,相当于dict的key集合,由于dict的key是不重复的,且key是不可变对象因此set也有如下特性:
不重复,(互异性),也就是说集合是天生去重的
元素为不可变对象,(确定性,元素必须可hash)
集合的元素没有先后之分,(无序性)
首先笼统的讲一下python3.x集合的内置函数有17个,分别如下:
序号
函数
描述
1
add(self, *args, **kwargs)
是把要传入的元素做为一个整个添加到集合中
2
clear(self, *args, **kwargs)
清空集合里面的所有元素
3
copy(self, *args, **kwargs)
复制集合里面的所有元素 ,返回一个浅复制
4
difference(self, *args, **kwargs)
求两个集合里面的不同的元素 ,又称差
5
difference_update(self, *args, **kwargs)
返回删除了 set “集合2”中含有的元素后的 set “集合1”
6
discard(self, *args, **kwargs)
如果在 set “集合”中存在元素 x, 则删除
7
intersection(self, *args, **kwargs)
求两个集合里面相同的元素,又称并 ,
返回只保留含有 set “集合2”中元素的 set “集合1”
8
intersection_update(self, *args, **kwargs)
,
返回只保留含有 set “集合2”中元素的 set “集合1” ,并更新自己
9
isdisjoint(self, *args, **kwargs)
判断两个集合是不是不相交,并返回
10
issubset(self, *args, **kwargs)
判断集合是不是包含其他集合,等同于a>=b
11
issuperset(self, *args, **kwargs)
判断集合是不是被其他集合包含,等同于a<=b
12
pop(self, *args, **kwargs)
删除并且返回 set “集合”中的一个不确定的元素, 如果为空则引发 KeyError
13
remove(self, *args, **kwargs)
从 set “集合”中删除元素 , 如果不存在则引发 KeyError
14
symmetric_difference(self, *args, **kwargs)
返回一个新的 set 包含 外面 和 里面 中不重复的元素
也就是两个集合不重复的元素
15
symmetric_difference_update(self, *args, **kwargs)
返回含有 set “里面”或者 set “外面”中有而不是两者都有的元素的 set “外面”
16
union(self, *args, **kwargs)
把两个集合连接起来,又称并
17
update(self, *args, **kwargs)
可以在集合里面添加多项
1,定义集合
#第一种方法
nums = [1,2,3,4,5,6,7]
num_set = set(nums)
print(num_set)
结果:
{1, 2, 3, 4, 5, 6, 7}
#第二种方法
num_set ={1,2,3,4,5,6,7}
2,增(更新)
set.add()
set.update([])
nums = {1,2,3,4,5,6,7}
#set.add()增加只能增加一个,不能增加多个值
# nums.add(8)
# print(nums)
#set.update()可以增加一个字符串,可以增加多个值
# nums.update([8])
# print(nums)
# nums.update('8')
# print(nums)
nums.update([8,9,10])
print(nums)
3,删
set1.remove(1)
nums = {1,2,3,4,5,6,7}
nums.remove(7)
print(nums)
结果:
{1, 2, 3, 4, 5, 6}
4,查:无法通过下标索引
5,改:不可变类型无法修改元素
6,交( &)
nums1 ={1, 2, 3, 4, 5, 6}
nums2 ={1, 2, 3, 4, 5, 10,7,8,9}
#交的方式一:&
a = nums1&nums2
print(a)
#并的方式二:intersaction
b = nums1.intersection(nums2)
print(b)
结果:
{1, 2, 3, 4, 5}
{1, 2, 3, 4, 5}
7,并(|)
nums1 ={1, 2, 3, 4, 5, 6}
nums2 ={1, 2, 3, 4, 5, 10,7,8,9}
#并的方式一:|
a = nums1|nums2
print(a)
#并的方式二:uniom
b = nums1.union(nums2)
print(b)
结果:
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
8,差(-)
nums1 ={1, 2, 3, 4, 5, 6}
nums2 ={1, 2, 3, 4, 5, 10,7,8,9}
#差的方式一:-
a1 = nums1-nums2
print(a1)
a2 = nums2-nums1
print(a2)
#差的方式二:difference
b1 = nums1.difference(nums2)
print(b1)
b2 = nums2.difference(nums1)
print(b2)
结果:
{6}
{8, 9, 10, 7}
{6}
{8, 9, 10, 7}
9,对称差集(^)
nums1 ={1, 2, 3, 4, 5, 6}
nums2 ={1, 2, 3, 4, 5, 10,7,8,9}
#对称差集表示方法一:^
a1 = nums1^nums2
print(a1)
#对称差集表示方法二:symmetric_difference
a2 = nums2.symmetric_difference(nums1)
print(a2)
结果:
{6, 7, 8, 9, 10}
{6, 7, 8, 9, 10}
10,集合转换
se = set(range(4))
li = list(se)
tu = tuple(se)
st = str(se)
print(li,type(li))
print(tu,type(tu))
print(st,type(st))
结果:
[0, 1, 2, 3]
(0, 1, 2, 3)
{0, 1, 2, 3}
补充:frozenset
冰冻集合,是一种特殊的集合类型,也是集合(集合是列表的话,冰冻集合就是元组)
下面创建冰冻集合(一般不会创建空的冰冻集合)
同时下面包含函数的补充
#创建带数据的冰冻集合
info = frozenset(('xuexi','gongzuo','kaoyan','xiuxi'))
print(info,type(info))
#成员监测
result = 'gongzuo' in info
print(result)
#遍历冰冻集合
for i in info:
print(i)
#集合推导式(无法得到冰冻集合,可以得到集合,列表,元组,字典类型)
result = {i for i in info}
print(result,type(result))
#函数
#冰冻集合可以使用集合的函数(不修改集合本身的函数都可以使用)
info = frozenset(('xuexi','gongzuo','kaoyan','xiuxi'))
#copy()
result = info.copy()
print(result)
#集合操作 交集,并集,差集,对称差集等 不修改冰冻集合本身就能使用:冰冻集合的操作结果都是冰冻集合
info = frozenset(('xuexi','gongzuo','kaoyan','xiuxi'))
info2 = {'xuexi','gongzuo','kaoyan','xiuxi'}
#冰冻集合操作
result = info.union(info2)
print(result)
#普通集合操作(冰冻集合是参考集合)
result = info2.union(info)
print(result)
作者:战争热诚
python特效集合_python 集合操作方法详解相关推荐
- python字典操作的方法_python 字典操作方法详解
python 字典操作方法详解 一.总结 一句话总结: 字典就是键值对映射 ,像js和php中的键值对数组:{'name':'jamnes','age':'32'} 1.python字典的增删改查? ...
- python切片输出_Python语言之详解切片
本篇文章主要讲述Python语言之详解切片,希望阅读本篇文章以后大家有所收获,帮助大家对相关内容的理解更加深入. 切片操作就是对list,元组,字符串进行截取操作有了切片操作,很多地方循环就不再需要了 ...
- python中正则表达式_Python中正则表达式详解
正则表达式是用来简洁表达一组字符串的表达式,本文主要和大家分享Python 中正则表达式知识详解,希望能帮助到大家.操作符说明实例.表示任何单个字符 [ ]字符集,单个字符取值范围[abc]表示a或b ...
- python模块导入_Python模块导入详解
定义 模块:用来从逻辑上组织Python代码(变量.函数.类.逻辑)去实现一个功能.本质就是.py结尾的Python文件. 包:用来从逻辑上组织模块的(可以放一堆模块在目录下).本质就是一个目录(必须 ...
- python元编程_python元编程详解(3)
今天转载一片非常精彩的文章供大家欣赏:参考文章链接. python开发者门户一个很好的学习python的网站,大家有时间可以多看看. 下面正式开始今天的内容: 在理解元类之前,你需要先掌握Python ...
- python mysql实例_Python 操作MySQL详解及实例
使用Python进行MySQL的库主要有三个,Python-MySQL(更熟悉的名字可能是MySQLdb),PyMySQL和SQLAlchemy. Python-MySQL资格最老,核心由C语言打造, ...
- python path模块_python pathlib模块详解
借鉴于 pathlib 官方文档 用于自己学习和记录 使用 pathlib 模块基本可以代替 os.path 来处理路径.它采用了完全面向对象的编程方式. 其包含六个类,图片如下: 但是大体有两类: ...
- python复数类型转换_Python 复数数据类型详解(complex)[学习 Python 必备基础知识][看此一篇就够了]...
您的"关注"和"点赞",是信任,是认可,是支持,是动力...... 如意见相佐,可留言. 本人必将竭尽全力试图做到准确和全面,终其一生进行修改补充更新. 1 复 ...
- 写python脚本管理_Python 文件管理实例详解
本文实例讲述了Python 文件管理的方法.分享给大家供大家参考,具体如下: 一.Python中的文件管理 文件管理是很多应用程序的基本功能和重要组成部分.Python可以使文件管理极其简单,特别是和 ...
- python dict下标_Python库collections详解
collections模块包含了除了内置类型list.dict.tuple之外的容器类型.本文详细介绍了Counter.defaultdict.namedtuple.OrderedDict.Chain ...
最新文章
- python官网下载安装教程-各种版本的Python下载安装教程
- Mysql常见的面试总结
- 死锁的产生、预防和避免
- react json转换_Typescript + React 新手篇
- 中国进口消费市场研究报告2020
- jquery获得select option的值 和对select option的操作
- 谈谈对网站性能优化的认识
- 瑞友天翼服务器ip地址怎么修改,怎么修改这个IP地址
- Spring Cloud 篇 :OpenFeign
- Cadence Allegro剪断走线图文教程及视频演示
- excel文件修复工具_微软修复磁盘清理工具无法完全删除windows.old文件夹问题
- 魅族android11,魅族17系列即将吃上安卓11,信息保护更稳了?
- 史帝奇科技|引爆点是文旅项目的生命力—裸眼3D轨道环幕影院
- 西安邮电大学计算机学院教师,西安邮电大学计算机学院
- 快递单号快速查询,自动识别快递公司
- android 后台录制视频,Android实现视频录制
- java 输出反斜杠_Java 反斜杠如何转义的问题
- 数明SLM27517能驱动MOSFET和IGBT功率开关 低侧栅极驱动器兼容UCC27517
- QST青软实训学员学习总结-2020/4/22-ZigBee
- 深入浅出数据分析读书笔记