7.Python-集合

张开发
2026/4/16 17:34:10 15 分钟阅读

分享文章

7.Python-集合
set集合一个不允许重复 可变类型元素可哈希无序无法通过索引取值可变可以添加和删除元素不允许数据重复想要维护一大堆不重复的数据时就可以用集合注意定义空集合时只能使用v set()不能使用v{}这样是定义一个空字典一、独有1.1 、 添加元素data{刘嘉玲,关之琳,王祖贤}data.add(郑裕玲)print(data){王祖贤,郑裕玲,刘嘉玲,关之琳}1.2 、删除元素data{刘嘉玲,关之琳,王祖贤,张曼⽟,李若彤}data.discard(关之琳)print(data){张曼⽟,王祖贤,李若彤,刘嘉玲}1.3 、交集s1{刘能,赵四,⽪⻓⼭}s2{刘科⻓,冯乡⻓,⽪⻓⼭}s4s1.intersection(s2)# 取两个集合的交集print(s4)# {⽪⻓⼭}s3s1s2# 取两个集合的交集print(s3)1.4 、并集s1{刘能,赵四,⽪⻓⼭}s2{刘科⻓,冯乡⻓,⽪⻓⼭}s4s1.union(s2)# 取两个集合的并集 {刘能, 赵四, ⽪⻓⼭,刘科⻓, 冯乡⻓, }print(s4)s3s1|s2# 取两个集合的并集print(s3)1.5 、差集s1{刘能,赵四,⽪⻓⼭}s2{刘科⻓,冯乡⻓,⽪⻓⼭}s4s1.difference(s2)# 差集s1中有且s2中没有的值 {刘能, 赵四}s6s2.difference(s1)# 差集s2中有且s1中没有的值 {刘科⻓, 冯乡⻓}​s3s1 - s2# 差集s1中有且s2中没有的值s5s2 - s1# 差集s2中有且s1中没有的值​print(s5,s6)二、公共2.1 、 减计算差集s1{刘能,赵四,⽪⻓⼭}s2{刘科⻓,冯乡⻓,⽪⻓⼭}s3s1 - s2 s4s2 - s1 print(s3)print(s4){刘能,赵四}{冯乡⻓,刘科⻓}2.2 、计算交集s1{刘能,赵四,⽪⻓⼭}s2{刘科⻓,冯乡⻓,⽪⻓⼭}s3s1s2 print(s3){⽪⻓⼭}2.3 、|计算并集s1{刘能,赵四,⽪⻓⼭}s2{刘科⻓,冯乡⻓,⽪⻓⼭}s3s1|s2 print(s3){赵四,刘科⻓,冯乡⻓,⽪⻓⼭,刘能}2.4 、长度v{刘能,赵四,尼古拉斯}datalen(v)print(data)32.5 、for循环v{刘能,赵四,尼古拉斯}foriteminv: print(item)刘能 尼古拉斯 赵四2.6 、转换其他类型如果想要转换为集合类型可以通过set进行转换并且如果数据有重复自动剔除提示int/list/tuple/dict都可以转换为集合v1[11,22,33,11,3,99,22]v2set(v1)print(v2)# {11,22,33,3,99}v1(11,22,3,11)v2set(v1)print(v2)# {11,22,3}提示这其实也是去重的一个手段2.7 、集合得其他知识2.7.1 存储原理利用哈希函数将元素转换成一个数值然后取余数将元素放在哈希表对应得余数位置2.7.2 元素必须可哈希因存储原理集合的元素必须是可哈希的值即内部通过通过哈希函数把值转换成一个数字。目前可哈希的数据类型int、bool、str、tuple而list、set是不可哈希的总结集合的元素只能是 int、bool、str、tuple2.7.3 查找速度特别快因存储原理特殊集合的查找效率非常高数据量大了才明显2.7.4 注意由于True和False本质上存储的是 1 和 0 而集合又不允许重复所以在整数 0、1和False、True出现在集合中会有如下现象v1{True,1}print(v1)# {True}v2{1, True}print(v2)# {1}v3{0, False}print(v3)# {0}v4{False,0}print(v4)# {False}2.8 、强插None类型Python的数据类型中有一个特殊的值None意味着这个值啥都不是 或 表示空。 相当于其他语言中null作用一样在一定程度上可以帮助我们去节省内存

更多文章