python 的集合
set 的特点: 把不同的元素组合在一起,元素值必须是可哈希不可变的
set 的创建
1 2 3 4 5 | s = set ( 'alex li' ) print (s) 表现形式;去重 { 'e' , 'i' , ' ' , 'l' , 'a' , 'x' } |
set集合去重
1 2 3 4 5 6 7 | sy = [ 'cx' , 'chenxi' , 'cx' ] print (sy) print ( set (sy)) [ 'cx' , 'chenxi' , 'cx' ] { 'chenxi' , 'cx' } |
set 去重并查看数据类型
1 2 3 4 5 6 7 8 9 10 | sy = [ 'cx' , 'chenxi' , 'cx' ] print (sy) print ( set (sy), type ( set (sy))) { 'i' , 'a' , 'e' , 'x' , ' ' , 'l' } [ 'cx' , 'chenxi' , 'cx' ] { 'chenxi' , 'cx' } < class 'set' > |
set 把不同的元素组合到一起,但元素的值必须不能变化
1 2 3 4 5 6 7 8 9 10 | li = [[ 1 , 2 ], 3 , 'tyuio' ] a = set (li) print (a) Traceback (most recent call last): File "D:/python/map.py" , line 308 , in <module> a = set (li) TypeError: unhashable type : 'list' |
set集合分为可变集合和非可变集合;创建方式
1 2 3 4 5 6 7 8 9 10 11 | s1 = set ( 'alvin' ) # 可变 s2 = frozenset ( 'yuan' ) #不可变 print (s1, type (s1)) print (s2, type (s2)) 测试 { 'i' , 'v' , 'l' , 'a' , 'n' } < class 'set' > frozenset ({ 'n' , 'y' , 'u' , 'a' }) < class 'frozenset' > |
集合的访问与判断集合里是否存在某元素
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | s1 = set ( 'alvin' ) print ( 'a' in s1) #判断a元素是否在集合里存在;存在为Ture,不存在False print ( 'b' in s1) for i in s1: print (i) True False a l n i v |
集合里添加单个元素
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | def df(): #查看元素内容的函数 # print('a' in s1) # 判断a元素是否在集合里存在;存在为Ture,不存在False # print('b' in s1) print ( "********************************" ) for i in s1: print (i) print ( '\n---------\n' ) a = [ 1 , 5 , 2 , "wertayuio" , 6 , 5 ] s1 = set (a) df() s1.add( "wsd" ) #在元素里添加一个元素 df() False False * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 1 2 wertayuio 5 6 - - - - - - - - - False False * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 1 wertayuio 5 6 - - - - - - - - - |
更新(添加多个元素)元素
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | s1.update( "ops2" ) #作为一个序列添元素,如果重复只添加一个 df() 1 2 5 6 wertayuio - - - - - - - - - 1 2 5 6 p wertayuio o s 2 - - - - - - - - - |
更新(添加多个元素)元素
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | s1.update([ 12 , 'wwww' ]) #如果列表只更新添加两个 df() 测试 D:\pyth\python.exe D: / python / map .py wertayuio 1 2 5 6 - - - - - - - - - wertayuio 1 2 5 6 12 wwww - - - - - - - - - |
删除集合指定元素操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | s1.remove( 2 ) #删除指定的元素操作 df() 1 2 5 6 wertayuio - - - - - - - - - 1 5 6 wertayuio - - - - - - - - - |
随机删除操作
1 2 3 4 5 6 7 8 9 | print (s1) s1.pop() print (s1) 测试 { 1 , 2 , 5 , 6 , 'wertayuio' } { 2 , 5 , 6 , 'wertayuio' } |
清空集合内容
1 2 3 4 5 6 | print (s1) s1.clear() #清空 print (s1) { 1 , 2 , 'wertayuio' , 5 , 6 } set () |
判断两个集合是否相同
1 2 3 4 5 6 7 8 | s = set ( "chenxi" ) s1 = set ( "chenxixi" ) print (s = = s1) #判断两个集合是否相等,相等为True True |
判断集合1是否被集合2 包含
1 2 3 4 5 | print ( set ( "qwert" )< set ( "qwertyuiop" )) #判断后者集合是否包含前者 True |
集合and与or
1 2 3 4 5 6 7 | print ( set ( "12345" ) or set ( "567890" )) #打印前面的set集合 print ( set ( "12345" ) and set ( "567890" )) # 打印后面的集合 { '2' , '4' , '5' , '1' , '3' } { '8' , '0' , '5' , '6' , '9' , '7' } |
集合的交集与并集
1 2 3 4 | s1 = set ( "123456" ) s2 = set ( "456789" ) print (s2.intersection(s1)) #取交集;两个集合共有的元素 print (s2.union(s1)) #取并集,指示取两个集合全部的元素并去重print(s1 | s2) #求并集的另一方法<br><br>{'5', '4', '6'}<em id="__mceDel">{'7', '8', '5', '3', '2', '4', '1', '9', '6'}<br><br>{'7', '8', '5', '3', '2', '4', '1', '9', '6'}</em> |
取集合的差集
1 2 3 4 5 6 | s1 = set ( "123456" ) s2 = set ( "456789" ) print (s2.difference(s1)) #取s2里有的,s1里没有的元素 print (s1.difference(s2)) # 取s1里有的,s2里没有的元素print(s1.symmetric_difference(s2)) #取对称差集{'7', '8', '9'}<br>{'1', '3', '2'}<br>{'7', '1', '9', '2', '8', '3'} |
草都可以从石头缝隙中长出来更可况你呢
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏