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的子集

posted @ 2020-09-29 23:11  MKY-门可意  阅读(183)  评论(0编辑  收藏  举报