python基础 13. 集合
集合
什么是集合
python语言提供的内置数据结构
与列表、字典一样独属于可变类型序列
集合是没有value的字典
集合的创建
集合的顺序是混乱的,第一个放入的数据未必排在第一位
集合内的单个元素不能重复,会把重复的去掉
1 2 3 4 5 6 7 8 9 10 11 | # 集合创建 a = set () # 集合不能用{}创建 b = { 'a' , 'b' , 'c' , 'd' } c = set ( 'abcdefga' ) d = set ( range ( 5 )) e = set ([ 1 , 2 , 3 , 4 , 4 , 6 ]) print (a, type (a), id (a)) # 空集合 print (b, type (b), id (b)) # 集合的顺序是混乱的,第一个放入的数据未必排在第一位 print (c, type (c), id (c)) # 只会输出一个a,不允许重复元素,否则会去掉后续重复元素 print (d, type (d)) print (e, type (e)) |

集合的常用操作
集合元素的判断操作
in和not in
集合元素的新增操作
调用add(),一次添加一个元素
调用update(),一次至少添加一个元素
集合元素的删除操作
调用remove()方法,一次删除一个指定元素,如果指定的元素不存在则抛出keyeroor
调用discard()方法,一次删除一个指定元素,如果指定元素不存在抛出异常
调用pop()方法,一次只删除一个任意元素
调用clear()方法,清空集合
1 2 3 4 5 6 7 8 9 10 11 | # 集合元素的删除 a = { 1 , 2 , 3 , 4 , 5 , 10 , 20 , 30 , 100 , 40 , '6' , 52 } a.remove( 100 ) # a.remove(200) # 不存在时,抛出KeyError: 200 a.discard( 40 ) a.discard( 50 ) # 不存在时,不报错 a.pop() # a.pop(2) # 指定元素删除时,抛出TypeError: set.pop() takes no arguments (1 given) print (a) a.clear() print (a) |

集合间的关系
两个集合是否相等
可以使用运算符 == 或 != 进行判断
一个集合是否是另一个集合的子集
可以调用方法issubset进行判断
B是A的子集
一个集合是否是另一个集合的超集
可以调用方法issuperset进行判断
A是B的超集
两个集合是否没有交集
可以调用方法isdisjoint进行判断
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | # 集合之间的关系 # 两个集合是否相等 s = { 10 , 20 , 30 , 40 } a = { 20 , 30 , 40 , 10 } print (s = = a) # 集合的元素是无序的,只要内容相同,存储顺序是相通的 print (s ! = a) # 一个集合是否是另一个集合的子集 a = { 1 , 2 , 3 , 4 , 5 , 6 , 7 } b = { 1 , 2 , 3 , 4 , 5 } print (b.issubset(a)) print (a.issubset(b)) # 一个集合是否是另一个集合的超集 a = { 1 , 2 , 3 , 4 , 5 , 6 , 7 }b = { 1 , 2 , 3 , 4 , 5 } print (a.issuperset(b)) print (b.issuperset(a)) # 两个集合是否没有交集 a = { 1 , 2 , 3 , 4 } b = { 5 , 6 , 7 } c = { 1 , 4 , 5 } print (a.isdisjoint(b)) # 没有交集则返回True,有交集则返回False print (a.isdisjoint(c)) |

集合的数学操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | # # 集合的数学操作 # 交集 a = { 1 , 2 , 3 , 4 } b = { 1 , 'b' , 3 , 'd' } print (a.intersection(b)) # 交集 print (a & b) # 并集 a = { 1 , 2 , 3 , 4 } b = { 1 , 'b' , 3 , 'd' } print (a.union(b)) # 并集 print (a | b) # 差集 print (a.difference(b)) # a集合中不属于交集的元素 print (a - b) # 对称差集 print (a.symmetric_difference(b)) # 两个集合的差集总和 print (a) print (b) |

集合生成式
用于生成集合的公式:{ i*i for i in range(1,10)}
将{}修改为[]就是列表生成式
没有元组生成式
1 2 3 | # 集合生成式 a = {i * i for i in range ( 1 , 10 )} print (a) |

列表、字典、元组、集合总结
数据结构
|
是否可变
|
是否重复
|
是否有序
|
定义符号
|
列表(list)
|
可变
|
可重复
|
有序
|
[]
|
元组(tuple)
|
不可变
|
可重复
|
有序
|
()
|
字典(dict)
|
可变
|
key不可重复
|
无序
|
{key:value}
|
value可重复
|
||||
集合(set)
|
不可变
|
不可重复
|
无序
|
{}
|
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本