7.Python-集合

set集合,一个不允许重复重复 & 可变类型(元素可哈希)
无序,无法通过索引取值
可变,可以添加和删除元素
不允许数据重复

想要维护一大堆不重复的数据时,就可以用集合

注意:定义空集合时,只能使用v = set(),不能使用 v={}(这样是定义一个空字典)

一、独有

1.1 、 添加元素

data = {"刘嘉玲", '关之琳', "王祖贤"}
data.add("郑裕玲")
print(data)

{'王祖贤', '郑裕玲', '刘嘉玲', '关之琳'}

1.2 、删除元素

data = {"刘嘉玲", '关之琳', "王祖贤","张曼⽟", "李若彤"}
data.discard("关之琳")
print(data)

{'张曼⽟', '王祖贤', '李若彤', '刘嘉玲'}

1.3 、交集

s1 = {"刘能", "赵四", "⽪⻓⼭"}
s2 = {"刘科⻓", "冯乡⻓", "⽪⻓⼭"}

s4 = s1.intersection(s2) # 取两个集合的交集 
print(s4) # {"⽪⻓⼭"}

s3 = s1 & s2   			  # 取两个集合的交集
print(s3)

1.4 、并集

s1 = {"刘能", "赵四", "⽪⻓⼭"}
s2 = {"刘科⻓", "冯乡⻓", "⽪⻓⼭"}
s4 = s1.union(s2) 		# 取两个集合的并集  {"刘能", "赵四", "⽪⻓⼭","刘科⻓", "冯乡⻓", }
print(s4)
s3 = s1 | s2   			# 取两个集合的并集
print(s3)

1.5 、差集

s1 = {"刘能", "赵四", "⽪⻓⼭"}
s2 = {"刘科⻓", "冯乡⻓", "⽪⻓⼭"}
s4 = s1.difference(s2)      # 差集,s1中有且s2中没有的值 {"刘能", "赵四"}
s6 = s2.difference(s1)      # 差集,s2中有且s1中没有的值 {"刘科⻓", "冯乡⻓"}
​s3 = s1 - s2               # 差集,s1中有且s2中没有的值
s5 = s2 - s1               # 差集,s2中有且s1中没有的值
​print(s5,s6)

二、公共

2.1 、 减,计算差集

s1 = {"刘能", "赵四", "⽪⻓⼭"}
s2 = {"刘科⻓", "冯乡⻓", "⽪⻓⼭"}

s3 = s1 - s2 
s4 = s2 - s1
print(s3)
print(s4)

{'刘能', '赵四'}
{'冯乡⻓', '刘科⻓'}

2.2 、&,计算交集

s1 = {"刘能", "赵四", "⽪⻓⼭"}
s2 = {"刘科⻓", "冯乡⻓", "⽪⻓⼭"}
s3 = s1 & s2
print(s3)

{'⽪⻓⼭'}

2.3 、|,计算并集

s1 = {"刘能", "赵四", "⽪⻓⼭"}
s2 = {"刘科⻓", "冯乡⻓", "⽪⻓⼭"}
s3 = s1 | s2
print(s3)

{'赵四', '刘科⻓', '冯乡⻓', '⽪⻓⼭', '刘能'}

2.4 、长度

v = {"刘能", "赵四", "尼古拉斯"}
data = len(v)
print(data)

3

2.5 、for循环

v = {"刘能", "赵四", "尼古拉斯"}
for item in v:
	print(item)


刘能
尼古拉斯
赵四

2.6 、转换

其他类型如果想要转换为集合类型,可以通过set进行转换,并且如果数据有重复自动剔除

提示:int/list/tuple/dict都可以转换为集合

v1 = [11,22,33,11,3,99,22]
v2 = set(v1)
print(v2) # {11,22,33,3,99}

v1 = (11,22,3,11)
v2 = set(v1)
print(v2) # {11,22,3}

提示:这其实也是去重的一个手段

2.7 、集合得其他知识

2.7.1 存储原理:利用哈希函数将元素转换成一个数值,然后取余数,将元素放在哈希表对应得余数位置

2.7.2 元素必须可哈希:因存储原理,集合的元素必须是可哈希的值,即:内部通过通过哈希函数把值转换成一个数字。目前可哈希的数据类型:int、bool、str、tuple,而list、set是不可哈希的
总结:集合的元素只能是 int、bool、str、tuple

2.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作用一样,在一定程度上可以帮助我们去节省内存

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值