Python集合详解
bigegpt 2024-12-31 09:32 3 浏览
前言
在上一篇《Python元组与字典用法详解》中,我们介绍了元组和字典的用法,简单回顾一下:
元组:
- 创建元组:( )和tuple()函数两种方式
字典:
- 创建字典:{ }和dict()函数两种方式
- 访问字典元素:dictname[key]、dictname.get(key[,default])
- 字典添加键值对:dictname[key] = value
- 更新字典:dictname.update({"key": value})
- 删除字典键值对:pop() 用来删除指定的键值对,而popitem() 用来随机删除一个键值对
- 深拷贝与浅拷贝:浅拷贝在原字典内容发生变更后也会跟着变更,深拷贝会生成一个新的内存地址、及时原有字典内容发生变更也不受影响
而今天的主题是Python集合,Python 中的集合,是一种无序的、可变的序列,和数学中的集合概念一样,用来保存不重复的元素,即集合中的元素都是唯一的,互不相同。形式上看,和字典类似,Python 集合会将所有元素放在一对大括号 {} 中,相邻元素之间用“,”分隔,如下所示:
{element1,element2,...,elementn}
一、创建集合
1.使用 {} 创建
在 Python 中,创建 set 集合可以像列表、元素和字典一样,直接将集合赋值给变量,其语法格式如下:
setname = {element1,element2,...,elementn}
set1 = {1, 2, 3, 4, 5, 6}
2.set()函数创建集合
set() 函数为 Python 的内置函数,其功能是将字符串、列表、元组、range 对象等可迭代对象转换成集合。该函数的语法格式如下:
setname = set(iteration)
# 使用set()方法创建
list1 = [5, 6, 7, 8, 9]
tup1 = ('a', 'b', 'c')
set2 = set(list1) # 将列表转换为集合
set3 = set(tup1) # 将元组转换为集合,转换结果是无序的
print(set2) # {5, 6, 7, 8, 9}
print(set3) # {'a', 'c', 'b'}
二、向集合中添加元素
set 集合中添加元素,可以使用 set 类型提供的 add() 方法实现,该方法的语法格式为:
setname.add(element)
# 向集合中添加元素
set1.add('e') # add()方法添加元素
print(set1) # {1, 2, 3, 4, 5, 6, 'e'}
set1.update(tup1) # update()方法添加元素
print(set1) # {1, 2, 3, 4, 5, 6, 'c', 'e', 'b', 'a'}
三、从集合中删除元素
删除现有 set 集合中的指定元素,可以使用 remove() 方法,该方法的语法格式如下:
setname.remove(element)
# 集合删除元素
set1.remove('a') # 删除指定元素
print(set1) # {1, 2, 3, 4, 5, 6, 'e', 'b', 'c'}
set1.pop() # 从最开始位置删除元素
print(set1) # {2, 3, 4, 5, 6, 'c', 'b', 'e'}
set1.discard('e') # 删除指定元素,不存在则不做任何操作
print(set1) # {2, 3, 4, 5, 6, 'c', 'b'}
set1.clear() # 清空集合
print(set1) # set()
四、清空集合
清空现有 set 集合中的所有元素,可以使用 clear() 方法,该方法的语法格式如下:
setname.clear()
list1 = [1, 3, 4, 5, 6, 6]
set2 = set(list1)
print(set2) # {1, 3, 4, 5, 6}
set2.clear()
print(set2) # set()
五、集合求交集、并集、差集
1.通过python运算符
运算操作 | Python运算符 | 含义 | 例子 |
交集 | & | 取两集合公共的元素 | set1 & set2 >> [3] |
并集 | | | 取两集合全部的元素 | set1 | set2 >> [1,2,3,4,5] |
差集 | - | 取一个集合中另一个集合没有的元素 | set1 - set2 >> [1,2] set2 - set1 >> [4,5] |
对称差集 | ^ | 取集合A和B中不属于A&B的元素 | set1 ^ set2 >> [1,2,4,5] |
2.通过函数
方法名 | 语法格式 | 含义 |
difference() | set3 = set1.difference(set2) | 将set1中有而set2中没有的元素赋给set3 |
intersection() | set3 = set1.intersection(set2) | 取set1和set2的交集,赋给set3 |
union() | set3 = set1.difference(set2) | 取set1和set2的并集,赋给set3 |
示例:
# 集合交集、并集、差集
set_a = {'a', 'b', 'c', 'd'}
set_b = {'c', 'd', 'e', 'f'}
# 求交集
ict = set_a.intersection(set_b) # intersection()方法
print(ict) # {'c', 'd'}
set_ict = set_a & set_b # 使用 & 运算符
print(set_ict) # {'c', 'd'}
# 求并集
union = set_a.union(set_b) # union()方法
print(union) # {'f', 'd', 'e', 'b', 'c', 'a'}
set_union = set_a | set_b # 使用 | 运算符
print(set_union) # {'f', 'c', 'b', 'd', 'a', 'e'}
# 求差集
diff = set_a.difference(set_b) # 使用difference()方法
print(diff) # {'b', 'a'}
set_diff = set_a - set_b # 使用 - 运算符
print(set_diff) # {'a', 'b'}
六、集合其他用法
1.查看集合所有方法
通过 dir(set) 命令可以查看它有哪些方法:
>>> dir(set)
['add', 'clear', 'copy', 'difference', 'difference_update', 'discard', 'intersection', 'intersection_update', 'isdisjoint',
'issubset', 'issuperset', 'pop', 'remove', 'symmetric_difference', 'symmetric_difference_update', 'union', 'update']
2.复制集合
# 复制集合
set4 = {1, 3, 5, 7, 9}
set5 = set4.copy()
print(set5) # {1, 3, 5, 7, 9}
3.列表去重
# 列表去重
list2 = [1, 1, 1, 3, 4, 5, 6, 6]
set6 = set(list2)
print(set6) # {1, 3, 4, 5, 6}
list3 = list(set6)
print(list3) # [1, 3, 4, 5, 6]
总结
列表和元组都是有序序列,而字典、集合都是无序序列,不能通过索引(index)获取元素;
列表、字典、集合都是可变序列,而元组是不可变序列,一旦创建,元素就不能发生变化;
相关推荐
- 了解Linux目录,那你就了解了一半的Linux系统
-
大到公司或者社群再小到个人要利用Linux来开发产品的人实在是多如牛毛,每个人都用自己的标准来配置文件或者设置目录,那么未来的Linux则就是一团乱麻,也对管理造成许多麻烦。后来,就有所谓的FHS(F...
- Linux命令,这些操作要注意!(linux命令?)
-
刚玩Linux的人总觉得自己在演黑客电影,直到手滑输错命令把公司服务器删库,这才发现命令行根本不是随便乱用的,而是“生死簿”。今天直接上干货,告诉你哪些命令用好了封神!喜欢的一键三连,谢谢观众老爷!!...
- Linux 命令速查手册:这 30 个高频指令,拯救 90% 的运维小白!
-
在Linux系统的世界里,命令行是强大的武器。对于运维小白而言,掌握一些高频使用的Linux命令,能极大提升工作效率,轻松应对各种系统管理任务。今天,就为大家奉上精心整理的30个Linu...
- linux必学的60个命令(linux必学的20个命令)
-
以下是Linux必学的20个基础命令:1.cd:切换目录2.ls:列出文件和目录3.mkdir:创建目录4.rm:删除文件或目录5.cp:复制文件或目录6.mv:移动/重命名文件或目录7....
- 提高工作效率的--Linux常用命令,能够决解95%以上的问题
-
点击上方关注,第一时间接受干货转发,点赞,收藏,不如一次关注评论区第一条注意查看回复:Linux命令获取linux常用命令大全pdf+Linux命令行大全pdf为什么要学习Linux命令?1、因为Li...
- 15 个实用 Linux 命令(linux命令用法及举例)
-
Linux命令行是系统管理员、开发者和技术爱好者的强大工具。掌握实用命令不仅能提高效率,还能解锁Linux系统的无限潜力,本文将深入介绍15个实用Linux命令。ls-列出目录内容l...
- Linux 常用命令集合(linux常用命令全集)
-
系统信息arch显示机器的处理器架构(1)uname-m显示机器的处理器架构(2)uname-r显示正在使用的内核版本dmidecode-q显示硬件系统部件-(SMBIOS/DM...
- Linux的常用命令就是记不住,怎么办?
-
1.帮助命令1.1help命令#语法格式:命令--help#作用:查看某个命令的帮助信息#示例:#ls--help查看ls命令的帮助信息#netst...
- Linux常用文件操作命令(linux常用文件操作命令有哪些)
-
ls命令在Linux维护工作中,经常使用ls这个命令,这是最基本的命令,来写几条常用的ls命令。先来查看一下使用的ls版本#ls--versionls(GNUcoreutils)8.4...
- Linux 常用命令(linux常用命令)
-
日志排查类操作命令查看日志cat/var/log/messages、tail-fxxx.log搜索关键词grep"error"xxx.log多条件过滤`grep-E...
- 简单粗暴收藏版:Linux常用命令大汇总
-
号主:老杨丨11年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部下午好,我的网工朋友在Linux系统中,命令行界面(CLI)是管理员和开发人员最常用的工具之一。通过命令行,用户可...
- 「Linux」linux常用基本命令(linux常用基本命令和用法)
-
Linux中许多常用命令是必须掌握的,这里将我学linux入门时学的一些常用的基本命令分享给大家一下,希望可以帮助你们。总结送免费学习资料(包含视频、技术学习路线图谱、文档等)1、显示日期的指令:d...
- Linux的常用命令就是记不住,怎么办?于是推出了这套教程
-
1.帮助命令1.1help命令#语法格式:命令--help#作用:查看某个命令的帮助信息#示例:#ls--help查看ls命令的帮助信息#netst...
- Linux的30个常用命令汇总,运维大神必掌握技能!
-
以下是Linux系统中最常用的30个命令,精简版覆盖日常操作核心需求,适合快速掌握:一、文件/目录操作1.`ls`-列出目录内容`ls-l`(详细信息)|`ls-a`(显示隐藏文件)...
- Linux/Unix 系统中非常常用的命令
-
Linux/Unix系统中非常常用的命令,它们是进行文件操作、文本处理、权限管理等任务的基础。下面是对这些命令的简要说明:**文件操作类:*****`ls`(list):**列出目录内容,显...
- 一周热门
- 最近发表
- 标签列表
-
- mybatiscollection (79)
- mqtt服务器 (88)
- keyerror (78)
- c#map (65)
- resize函数 (64)
- xftp6 (83)
- bt搜索 (75)
- c#var (76)
- mybatis大于等于 (64)
- xcode-select (66)
- mysql授权 (74)
- 下载测试 (70)
- linuxlink (65)
- pythonwget (67)
- androidinclude (65)
- logstashinput (65)
- hadoop端口 (65)
- vue阻止冒泡 (67)
- oracle时间戳转换日期 (64)
- jquery跨域 (68)
- php写入文件 (73)
- kafkatools (66)
- mysql导出数据库 (66)
- jquery鼠标移入移出 (71)
- 取小数点后两位的函数 (73)