美文网首页Python
Python的基本数据类型——Set

Python的基本数据类型——Set

作者: 沐码人 | 来源:发表于2018-08-21 17:14 被阅读0次

    set是一组无序集合,集合中的每个元素都是独一无二的,集合本身可以添加、删除元素,下面我们来了解一下集合(set)的特性

    定义一个集合

    a={1,True,'Hello world',(1,2,3)}
    print(type(a))
    # 输出 set
    

    元组使用小括号( ),列表使用中括号[ ],而集合则使用了大括号{ }来定义

    集合的特性

    • 无序

    之前分享字符串、列表、元组的时候他们都有一个相同的特点:有序,所以我们可以通过索引和切片的方式访问每个元素。但是集合是无序的,这就意味着我们不能使用索引或切片

    a={1,2,3,4,5}
    
    print(a[1])
    print(a[1:3])
    
    # 以上情况都会报错
    
    • 每个元素都是独一无二的

    对比列表、元组你会发现集合中的每个元素都是唯一的,因为集合的这种特性,我们往往可以使用集合去重

    a={1,2,3,4,4,3,2}
    
    print(a)
    # 输出 {1,2,3,4}
    

    添加元素

    add( )或者update( )都可以给集合添加元素,不同的是添加单个元素的时候使用add( ),如果被添加的对象是tuple( )、list( )、set( )等类型时可以使用update( ),下面通过代码演示一下两者的区别

    • add( )的使用方法
    a = {1,2,3,4,5}
    
    a.add(6)
    print(a)
    # 输出 {1,2,3,4,5,6}
    
    • update( )的使用方法
    a = {1,2,3,4,5}
    a.update((5,6,7))
    print(a)
    # 输出 {1,2,3,4,5,6,7}
    

    删除元素

    discard( )和remove( )都可以删除集合中的元素,两种方法之间唯一的区别在于,如果元素不存在于集合中,使用discard( )删除元素集合保持不变,而remove( )则会报错

    a={1,2,3,4}
    
    a.discard(5)
    print(a)
    # 输出 {1,2,3,4}
    
    a.remove(5)
    # 报错
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    KeyError: 5
    
    

    pop( )和clear( )也可以删除集合中元素

    a={1,2,3,4,5}
    
    print(a.pop())
    # 输出1
    
    print(a)
    # 输出{2,3,4,5}
    
    
    a.clear()
    print(a)
    # 输出 set()
    
    

    小结 discard( )、remove( )、pop( )、clear( )之间的区别

    • discard( )删除不存在的集合元素不会报错
    • remove( )删除元素不存在的集合元素会报错
    • pop( ) 会返回被删除的元素
    • clear( )清空元素

    集合的数学运算

    求两个集合的差集

    • 需求: {1,2,3,4}、{2,3,5}.从第一个集合中剔除第二个集合也存在的元素
    a={1,2,3,4}
    b={2,3,5}
    
    a-b
    # 输出{1,4}
    
    或
    
    a.difference(b)
    # 输出{1,4}
    

    求两个集合的交集

    • 需求: 求{1,2,3,4}、{2,3}这两个集合的相同元素
     a={1,2,3,4}
     b={2,3,5}
     
    a&b
    # 输出{2,3}
    
    或
    
    a.intersection(b)
    # 输出{2,3}
    

    求两个集合的并集

    • 需求:把{1,2,3,4}、{3,4,5}这两个集合合并成一个,并且不能有重复元素
     a={1,2,3,4}
     b={2,3,5}
     
    a|b
    # 输出{1,2,3,4,5}
    
    或
    
    a.union(b)
    # 输出{1,2,3,4,5}
    
    

    上面的三种方法已经能满足大部分需求,但是你可能还有一种需求,剔除两个集合中相同的元素,并且让不同的元素组成一个新的集合,如下面的代码所示:

    a={1,2,3,4}
    b={3,4,5,6}
    # 组成{1,2,5,6}
    
    a^b
    
    或
    
    a.symmetric_difference(b)
    
    # 输出{1,2,5,6}
    

    集合中的更多内置方法

    拷贝一个集合

    a={1,2,3,4}
    b=a.copy()
    
    print(b)
    # 输出{1,2,3,4}
    
    

    判断两个集合是否存在共同元素

    a={1,2,3,4}
    b={100,200,300}
    c={1,100,4}
    
    print(a.isdisjoint(b))
    # 没有共同元素 返回True
    
    print(a.isdisjoint(c))
    # 有共同元素 返回 False
    

    判断一个集合是否包含另外一个集合

    a={1,2,3,4}
    b={1,2,3,4,5}
    
    # 判断a是否是b的子集
    print(a.issubset(b))
    # 输出 True
    
    # 判断b是否是a的子集
    print(b.issubset(a))
    # 输出 False
    

    判断集合中的元素是否都是true

    print(all({1,2,3,'Test'}))
    # 输出 True
    
    # 如果集合为空也会返回True
    print(all({}))
    # 输出 True
    
    print(all({False,3,4,5}))
    # 输出 False
    

    计算集合的长度

    a={1,2,3,4,5}
    print(len(a))
    # 输出 5
    
    print(len({}))
    # 输出 0
    

    计算集合中最大值

    a={1,2,3,4,5}
    print(max(a))
    # 输出 5
    

    计算集合中的最小值

    a={1,2,3,4,5}
    print(min(a))
    # 输出 1
    

    计算集合元素的和

    a={1,2,3,4,5}
    print(sum(a))
    # 输出 15
    

    判断一个元素是否存在于集合

    a={1,2,3,4,5}
    print(1 in a)
    # 输出 True
    
    print(10 in a)
    # 输出 False
    

    list和set的相互转化

    a=[1,2,3,4,5]
    print(set(a))
    # 输出{1,2,3,4,5}
    
    a={1,2,3,4,5}
    print(list(a))
    # 输出[1,2,3,4,5]
    

    list和set的相互转化可以去除list中的重复元素,主要就是借助了集合元素必须独一无二的特性

    总结:集合是python中一种重要的数据类型,要重点掌握集合的基本特性,熟练运用差集、交集、并集,一些内置方法可以先了解一下,方便日后写代码的时候查阅资料

    相关文章

      网友评论

        本文标题:Python的基本数据类型——Set

        本文链接:https://www.haomeiwen.com/subject/ovmjiftx.html