集合

特点:是一个无序的,不重复的数据组合
作用:(1)去重,把一个列表变成集合,就自动去重了
   (2)关系测试,测试两组数据之前的交集、差集、并集等关系
语法:s = {} #当为空时,为字典类型
   s = {1} #为集合类型。
   type(s) #返回<type 'set'>

把别的数据类型(元组、列表)直接转为集合
  s = [1,2,3,4,5,3,2]
  set(s)
结果:set([1,2,3,4,5])

增:s.add(2)#相同的添加不进去,只能添加一个
  s.add(6)#不同的数据直接添加
  help(s.update)#查看用法
  s.update([1,3,4,5])#可以添加多个值,s.add()只能添加一个值

删:s.remove(6)#删除6,如果没有删除的值会报错
  s.discard(6)#删除6,如果没有删除的值不报错
  s.pop()#随机删除值,要数据量足够大
  s.clear#清空


集合的关系测试:
iphone7 = {'rain','jack','lucy','lili'}
iphone8 = {'rain','lilei','shanshan','lucy'}

1、交集 >>>iphone7.intersection(iphone8)
      {'rain','lucy'}
    >>>iphone7 & iphone8
      {'rain','lucy'}


2、差集 >>>iphone7.difference(iphone8)#只买了iphone7没买iphone8的人
      {'jack','lili'}
    >>>iphone7 - iphone8#只买了iphone7没买iphone8的人
      {'jack','lili'}
    >>>iphone8.difference(iphone7)#只买了iphone8没买iphone7的人
      {'lilei','shanshan'}
    >>>iphone8 - iphone7#只买了iphone8没买iphone7的人
      {'lilei','shanshan'}


3、并集 >>>iphone8.union(iphone7)
      {'rain','jack','lucy','lili','lilei','shanshan'}
    >>>iphone8 | iphone7
      {'rain','jack','lucy','lili','lilei','shanshan'}

 

4、对称差集:不交集的部分(只买了iphone7 or iphone8的人)
    >>>iphone7.symmetric_difference(iphone8)
      {'jack','lili','lilei','shanshan'}
    >>>iphone7 ^ iphone8
      {'jack','lili','lilei','shanshan'}


包含关系:in,not in:判断某元素是否在集合内 = = ,!=:判断两个集合是否相等
两个集合之间一般有三种关系,相交,包含,不相交。在python中分别用下面的方法判断:
(1)判断两上集合是不是不相交:set.isdisjoint(s);
(2)判断集合是不是包含其他集合,等同于a>=b;set.issuperset(s)
(3)判断集合是不是被其他集合包含,等同于a<=b:set.issubset(s)

posted @ 2018-05-22 20:39  MrHB  阅读(139)  评论(0编辑  收藏  举报