python数据类型【集合(set)】
1.定义
集合是一个无序,可变,不允许数据重复的容器
v1={11,22,33}
无序,无法通过索引取值
可变,可以添加和删除元素
v1={11,22} v1.add(33) v1 {11,22,33}
不允许数据重复
v1={11,22,33} v1.add(33) v1 {11,22,33}
应用场景:
维护不重复的数据时,用set集合
注意:定义空集合时,只能使用v=set(),不能使用v={}(这样定义的是字典)
2.独有方法
添加元素 add()
data={1,2} data.add(3) data {1,2,3}
删除元素
data={1,2,3,4} data.discard(3) data {1,2,4}
交集(取相同值)
s1={1,2,3} s2={3,4,5} s3=s1.intersection(s2) s3 {3} s3=s1&s2 s3 {3}
并集(取所有值再去重)
s1={1,2,3} s2={3,4,5} s3=s1.union(s2) s3 {1,2,3,4,5} s3=s1|s2 s3 {1,2,3,4,5}
差集
s1={1,2,3} s2={3,4,5} s3=s1.difference(s2) #s1有s2没有的值 s3 {1,2} s3=s1-s2 #s1有s2没有的值 s3 {1,2} s3=s2.difference(s1) #s2有s1没有的值 s3 {4,5} s3=s2-s1 #s2有s1没有的值 s3 {4,5}
3.公共方法
减,计算差集
s1={1,2,3} s2={3,4,5} s3=s1-s2 #s1有s2没有的值 s3 {1,2} s3=s2-s1 #s2有s1没有的值 s3 {4,5}
&,计算交集
s1={1,2,3} s2={3,4,5} s3=s1&s2 s3 {3}
|,计算并集
s1={1,2,3} s2={3,4,5} s3=s1|s2 s3 {1,2,3,4,5}
长度
s1={1,2,3} len(s1) 3
for循环
s1={1,2,3} for i in s1: print(i)
4.转换
转换为集合类型,通过set()进行转换,如果有重复数据自动去重
提示:int/list/tuple/dict都可以转换为集合
v1='wxy'
set(v1) {'w','x','y'}
v2=[1,2,3]
set(v2) {1,2,3}
v3=(1,2,3)
set(v3) {1,2,3}
提示:是去重的一种方式
5.集合的存储原理
6. 元素必须可哈希
因存储原理,集合的元素必须是可哈希的值:即内部通过哈希函数把值转换成一个数字
可哈希数据类型:int,bool,str,tuple
不可哈希数据类型:list,set
总结:集合的元素只能是int,bool,str,tuple
7. 查找速度特别快
因存储原理特殊,集合的查找效率非常高(数据量大才明显)
低(列表和元组)
高(集合)
v1={1,2,3} for 2 in v1: print('yes')
8.类型对比和嵌套
类型 | 是否可变 | 是否有序 | 元素要求 | 是否可哈希 | 转换 | 定义空 |
---|---|---|---|---|---|---|
list | 是 | 是 | 无 | 否 | list(其他) | v=[]或v=list() |
tuple | 否 | 是 | 无 | 是 | tuple(其他) | v=()或v=tuple() |
set | 是 | 否 | 可哈希 | 否 | set(其他) | v=set() |
注意:由于True和False本质上存储的是1和0,而集合又不允许重复,所以在整数0,1,和False,True出现在集合中会有如下现象:
# True和1都存在,取第一个出现的
v1={True,1}
v1 True
v2={1,True}
v2 1
# False和0都存在,取第一个出现的
v3={False,0}
v3 False
v4={0,False}
v4 0
9.None类型
Python的数据类型中有一个特殊的值None,意味着这个值啥都不是或表示空,相当于其他语言中null作用一样
在一定程度上可以帮助我们去节省内存。例如:
v1=None
v1=[1,2,3]
转换布尔类型为False的值:
0
[] or list()
() or tuple()
set()
None
版权声明:本文为m0_46926492原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。