python数据类型【集合(set)】

python数据类型【集合(set)】

目录

  • python数据类型【集合(set)】
    • 1.定义
    • 2.独有方法
    • 3.公共方法
    • 4.转换
    • 5.集合的存储原理
    • 6. 元素必须可哈希
    • 7. 查找速度特别快
    • 8.类型对比和嵌套
    • 9.None类型

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.独有方法

  1. 添加元素 add()

    data={1,2}
    data.add(3)
    data  {1,2,3}
    
  2. 删除元素

    data={1,2,3,4}
    data.discard(3)
    data  {1,2,4}
    
  3. 交集(取相同值)

    s1={1,2,3}
    s2={3,4,5}
    s3=s1.intersection(s2)
    s3 {3}
    
    s3=s1&s2
    s3 {3}
    
  4. 并集(取所有值再去重)

    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}
    
  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.公共方法

  1. 减,计算差集

    s1={1,2,3}
    s2={3,4,5}
    s3=s1-s2           #s1有s2没有的值
    s3 {1,2} 
    
    s3=s2-s1   #s2有s1没有的值
    s3 {4,5} 
    
  2. &,计算交集

    s1={1,2,3}
    s2={3,4,5}
    s3=s1&s2
    s3 {3}
    
  3. |,计算并集

    s1={1,2,3}
    s2={3,4,5}
    s3=s1|s2
    s3 {1,2,3,4,5}
    
  4. 长度

    s1={1,2,3}
    len(s1)  3
    
  5. 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.集合的存储原理

python数据类型【集合(set)】_第1张图片

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

你可能感兴趣的:(#,python基础,python,set,集合)