zoukankan      html  css  js  c++  java
  • set集合

         set是python基础数据类型,容器型(数组、字典、元组)。它要求它里面的元素是不可变(可哈希)的数据类型(int、str、bool等),但是本身又是可变的数据类型。集合是无序的

         集合的作用:

                    列表去重

                    关系测试: 交集,并集,差集


    创建

    1、第一种

    s1=set()   #创建一个空集合

    2、第二种

    s2={11,22,33,44} #有点像字典的key,如果s2={} 就是一个空的字典



    增加和更新


    >>>s1={“ss”}

    >>> s1.add(11)
    >>> s1
    set([11,”ss”])


    #迭代增加,去重后依次增加

    s1.update(“abcd”)

    >>> s1
    set([11,”ss”,”a”,”b”,”c”,”d”])


    >>> a={11,22,33,44,55}
    >>> a.update([11,123,456,789]) # 循环列表然后把数据增加进去
    >>> a
    set([33, 456, 11, 44, 789, 22, 55, 123])



    删除

    s1.clear() 清空整个集合

    s1.remove(11) 删除元素

    s1.pop()随机删除


    修改

    这里只能变相处理,先remove元素在add添加元素




    更新集合(B集合保留A集合中没有的元素)

    >>> a={11,22,33}

    >>>b={33, 44, 22}

    >>> b.difference_update(a)
    >>> b
    set([44])

    删除一个指定集合元素,指定元素没有不报错

    >>> a={11,22,33}
    >>> a.discard(11)
    >>> a
    set([33, 22])

    删除指定元素,没有报错

    set([33, 22])
    >>> a.remove(33)
    >>> a
    set([22])


    交集

    >>> b={11,22,33,44}
    >>> a={22,55,66}
    >>> b.intersection(a)
    set([22])

    也可以写成  b & a


    并集

    >>> a={11,22,33,44,55}
    >>> b={22,77,88,11}
    >>> a.union(b)
    set([33, 11, 44, 77, 22, 55, 88])

    也可以写成  b | a


    差集


    >>> a
    set([33, 11, 44, 22])
    >>> b
    set([66, 11, 22, 55])
    >>> a.symmetric_difference(b)
    set([33, 66, 44, 55])

    也可以写成a – b


    查找a集合中的差集

    >>> a={11,22,33}
    >>> b={22,33,44}
    >>> a.difference(b)    #查找A比B多的
    set([11])
    >>> b.difference(a)  #查找B比A多的
    set([44])


    如果没有交集返回true,有交集返回falsse

    >>> b={11,22,33,44}
    >>> a={22}

    >>> b.isdisjoint(a)
    False


    子序列(子集)和父序列(超集)

    >>> a={11,22,33,44}     #a集合包含b集合的所有元素
    >>> b={11,22}                

    判断A是否是B的子序列,B不包含A所以不是

    >>> a.issubset(b)
    False

    判断A是B的父序列,A包含B的所有值所以A是B的父序列

    >>> a.issuperset(b)

    True

    也可以用下面的方式:

    a > b判断 a是不是b的超集

    b < a 判断 b是不是a的子集

  • 相关阅读:
    SDOI Day2
    SDOI Day1
    Codeforces 506E Mr. Kitayuta's Gift (矩阵乘法,动态规划)
    CEOI 2014 wall (最短路)
    BZOJ 3926: [Zjoi20150]诸神眷顾的幻想乡(后缀自动机)
    BZOJ 3925: [Zjoi2015]地震后的幻想乡(概率)
    BZOJ 3924: [Zjoi2015]幻想乡战略游戏(动态点分治)
    Nginx与Lua的开发
    Nginx访问控制
    Nginx模块
  • 原文地址:https://www.cnblogs.com/menkeyi/p/13752386.html
Copyright © 2011-2022 走看看