set集合
集合是无序的,不重复的数据集合,它里面的元素是可塔哈希的(不可变类型),但是集合本身是不可哈希(所以集合做不了字典的键)的。
集合的特点:
1、它是无序的,且是不重复的
2、集合里的元素必须是可哈希的(int、str、bool、tuple),但是它本身是不可哈希的
3、集合不能更改其内部的元素,只能新增和删除
4、集合可以求交集、并集、差集、反交集等
1 2 3 4 5 | #利用集合去重 lis = [ 1 , 1 , 2 , 2 , 3 , 3 , 3 , 4 , 5 , 6 , 6 , 7 ] set1 = set (lis) lis = list (set1) print (lis) #[1, 2, 3, 4, 5, 6, 7] |
集合的日常操作:
1、集合的创建
1 2 | set1 = set ({ 1 , 2 , 'alex' }) set2 = { 'alex' , 'wusir' , 'egon' } |
2、集合的增加
1 2 3 4 5 6 7 8 | set1 = set ({ 1 , 2 , 3 }) #1、set.add(obj) 添加一个元素 set1.add( 'wukong' ) print (set1) #{'wukong', 1, 2, 3} #2、set.update(seq) 迭代着将每一个元素逐一添加进去 set1.update( 'abc' ) print (set1) #{1, 2, 3, 'wukong', 'c', 'a', 'b'} |
3、集合的删除
1 2 3 4 5 6 7 8 9 | #删除集合元素 set1 = { 'alex' , 'wusir' , 'ritian' , 'egon' , 'barry' } #1、set.remove(obj) 按照元素去删除 set1.remove( 'ritian' ) print (set1) #{'alex', 'egon', 'barry', 'wusir'} #2、set.pop() 随机删除某个元素 set1.pop() print (set1) #{'wusir', 'egon', 'alex'} |
4、清空集合、删除集合
1 2 3 4 5 6 7 8 | set1 = { 'alex' , 'wusir' , 'ritian' , 'egon' , 'barry' } #1、清空集合 set.clear() set1.clear() print (set1) #set() #2、删除集合 del set del set1 print (set1) #报错: name 'set1' is not defined |
5、集合的查询
1 2 3 | set1 = { 'alex' , 'egon' , 'barry' } for item in set1: print (item, end = ' ' ) #alex egon barry |
6、集合的其它操作
6.1、交集
1 2 3 4 5 6 | set1 = { 1 , 2 , 3 , 4 , 5 } set2 = { 4 , 5 , 6 , 7 , 8 } #1、使用 & print (set1 & set2) #{4, 5} #2、intersection() print (set1.intersection(set2)) #{4, 5} |
6.2、并集
1 2 3 4 5 6 | set1 = { 1 , 2 , 3 , 4 , 5 } set2 = { 4 , 5 , 6 , 7 , 8 } #1、使用 | print (set1 | set2) #{1, 2, 3, 4, 5, 6, 7, 8} #2、union() print (set1.union(set2)) #{1, 2, 3, 4, 5, 6, 7, 8} |
6.3、反交集
1 2 3 4 5 6 | set1 = { 1 , 2 , 3 , 4 , 5 } set2 = { 4 , 5 , 6 , 7 , 8 } #1、使用 ^ print (set1 ^ set2) #{1, 2, 3, 6, 7, 8} #2、symmetric_difference() print (set1.symmetric_difference(set2)) #{1, 2, 3, 6, 7, 8} |
6.4、差集
1 2 3 4 5 6 7 | set1 = { 1 , 2 , 3 , 4 , 5 } set2 = { 4 , 5 , 6 , 7 , 8 } #1、使用 - print (set1 - set2) #{1, 2, 3} print (set2 - set1) #{8, 6, 7} #2、difference() print (set1.difference(set2)) #{1, 2, 3} |
6.5、子集与超集
1 2 3 4 5 6 7 8 9 | set1 = { 1 , 2 , 3 } set2 = { 1 , 2 , 3 , 4 , 5 , 6 } #1、子集 <、issubset() print (set1 < set2) #True print (set1.issubset(set2)) #True #2、超集 >、issuperset() print (set2 > set1) #True print (set2.issuperset(set1)) #True |
7、frozenset()不可变集合,让集合变成不可变类型
1 2 3 | set1 = { 1 , 2 , 3 } set2 = frozenset (set1) print (set2, type (set2)) #frozenset({1, 2, 3}) <class 'frozenset'> |
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步