day07 数据类型(下)
-
set 集合,一个不允许重复的 && 可变的类型
-
dict 字典,一个容器切元素必须的键值对
-
float ,生错中常见的小数
1、集合 (set)
集合是一个无序、可变、不允许数据重复的容器
1.1 定义
1.1.1 无序
v1 = {11,22,33,'alex'} ## 无序,就是无法通过索引取值
1.1.2 可变
可以添加和删除元素
v1 = {11,22,33,'alex'}
v1.add(55)
print(v1)
## {11,55,22,33,'alex'}
1.1.3 不允许数据重复
v1 = {11,22,33,'alex'}
v1.add(33)
print(v1)
## {11,22,33,'alex'}
使用场景
需要维护一大堆不重复的数据时,可以使用它,比如爬虫找突破链接…
** 注意事项
v = set() ## 必须使用set() 来定义空集合
v = {} ## 这种方式是不可以用的,创建的不是集合,而是字典
1.2 独有功能
1.2.1 添加元素
data = {'万嘉','刘德华','八大金刚'}
data.add('郑伊健')
1.2.2 删除元素
data = {'万嘉','刘德华','八大金刚'}
data.discard ('万嘉')
1.2.3 交集
data_1 = {'万嘉','刘德华','八大金刚'}
data_2 = {'王老大','孙大饼','大河马','刘德华'}
s3 = data_1 & data_2 ## {'刘德华'}
s4 = s1.intersection(s2)
## 以上2个方式都是取交集,
1.2.4 并集
data_1 = {'万嘉','刘德华','八大金刚'}
data_2 = {'王老大','孙大饼','大河马'}
s3 = data_1 | data_2
s4 = s1.union(s2)
## 以上2个方式都是取并集,
1.2.5 差集
data_1 = {'万嘉','刘德华','八大金刚'}
data_2 = {'王老大','孙大饼','大河马'}
s3 = data_1 - data_2 data_1中有且data_2中没有的值
s4 = data_1.difference(data_2) data_1中有且data_2中没有的值
s5 = data_2 - data_1 data_2 中有且data_1中没有的值
s6 = data_2.difference(data_1) data_2 中有且data_1中没有的值
## 以上2个方式都是取差集,data1 和data2 的位置不同,结果也会不同
1.3 公共功能
1.3.1 减法
同 差集
1.3.2 &, 计算交集
data_1 = {'万嘉','刘德华','八大金刚'}
data_2 = {'王老大','孙大饼','大河马','刘德华'}
s3 = data_1 & data_2 ## {'刘德华'}
s4 = s1.intersection(s2)
## 以上2个方式都是取交集,
1.3.3 | ,计算并集
data_1 = {'万嘉','刘德华','八大金刚'}
data_2 = {'王老大','孙大饼','大河马'}
s3 = data_1 | data_2
s4 = s1.union(s2)
## 以上2个方式都是取并集,
1.3.4 长度
data_1 = {'万嘉','刘德华','八大金刚'}
data = len(data_1)
print(data) ## 结果为3
1.3.5 for 循环
data_1 = {'万嘉', '刘德华', '八大金刚'}
for item in data_1:
print(item)
1.4 转换
其他类型如果要转为换集合的类型,可以通过set进行转换,并且如果数据有重复会自动删除
同样集合也可以转换为列表/元组 list/tuple/set
data_1 = 'feifei'
V2 = set(data_1)
print(v2) # {'f','e','i','f','e','i'}
1.5 其他
1.5.1 集合的存储的原理
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3JXFPdeg-1612500429390)(D:\ASSETS\3A152B05-B356-48C7-BB30-937293F9F24B.png)]
1.5.2 元素必须可哈希
存储的原理,结合的元素必须可哈希,既:内部通过哈希函数把值转换成数字
目前可哈希的类型是,Int,bool,str,tuple
目前不可哈希的类型是,list,set
1.5.3 查找速度特别快
因为存储原理特殊,所以结合的查找效率特别高
1.5.4 对比与嵌套
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EcYfZctO-1612500429391)(D:\ASSETS\A99420FA-0354-419C-AD8A-14B06D4617CE.png)]
- 注意: 由于True False 本质上存储的是0和1 ,所以整数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}