day9.集合

作用:去重,关系运算

定义:由不同元素组成的集合,集合中是一组无序排列的可hash值(不可变类型),可以作为字典的key

   集合的目的是将不同的值存放到一起,不同的集合间用来做关系运算,无需纠结于集合中单个值

常用操作:

  in 和 not in :判断某个元素是否存在于集合中

  并集  A|B : 在A或者在B

  交集  A&B :既在A又在B

  差集  A-B  :只在A不在B

  对称差集  A^B : 集合A与集合B中所有不属于A∩B的元素的集合

  是否相等  A==B :判断是否为同一个集合,返回布尔值

  父集,子集 >,>= ,<,<= :A>=B  判断A是否为B的父集,返回布尔值

掌握方法:

pythons={'alex','egon','yuanhao','wupeiqi','gangdan','biubiu'}
linuxs={'wupeiqi','oldboy','gangdan'}

  1.交集(求出即报名python又报名linux课程的学员名字集合)

  pythons & linuxs
  pythons.intersection(linuxs)
  linuxs.intersection(pythons)
 2.并集(求出所有报名的学生名字集合)
  pythons | linuxs
  pythons.union(linuxs)
  linuxs.union(pythons)
3.差集(求只报名python,没有报名linux的学生)
  pythons - linuxs
  pythons.difference(linuxs)
4.对称差集(求出没有同时这两门课程的学员名字集合)
  pythons ^ linuxs
  pythons.symmetric_difference(linuxs)
  linuxs.symmetric_difference(pythons)
5.添加元素
  linuxs.add('mxt')
  linuxs.add([1,2,3]) #报错,只能添加不可变类型
6.删除元素
  res=linuxs.pop() #不用指定参数,随机删除,并且会有返回值
  linuxs.remove('oldboy') #指定元素删除,元素不存在则报错,单纯的删除,没有返回值
  linuxs.discard('oldboy1111111') #指定元素删除,元素不存在不报错,单纯的删除,没有返回值
7.更新操作
linuxs={'wupeiqi','oldboy','gangdan'}
new_set={'wupeiqi','alex_SB'}
linuxs.update(new_set)    #用参数的元素更新原集合

8.清空操作

linuxs={'wupeiqi','oldboy','gangdan'}
linuxs.clear() #没有返回值,清空原集合

9.复制操作

linuxs={'wupeiqi','oldboy','gangdan'}
new_l = linuxs.copy()#复制,不改变原集合

10.  其他

  set1.difference_update(set2)  等价于  set1 -= set2

  set1.intersection_update(set2)  等价于  set1 &= set2

  set1.symmetric_difference_update(set2) 等价于 set1 ^= set2

  set1.issuperset(set2)  判断set1是否为set2的父集,等价于  set1 >= set2

  set1.issubset(set2) 判断set1是否为set2的子集,等价于 set1 <= set2

  set1 == set2 判断两个集合是否相等,返回布尔值

11.补充:

# 请注意:union(), intersection(), difference() 和 symmetric_difference()
# 的非运算符(non-operator,就是形如 s.union()这样的)版本将会接受任何 iterable 作为参数。
# 相反,它们的运算符版本要求参数必须是 sets。这样可以避免潜在的错误,
# 如:为了更可读而使用 set('abc') & 'cbs' 来替代 set('abc').intersection('cbs')。
# 从 2.3.1 版本中做的更改:以前所有参数都必须是 sets。
原文地址:https://www.cnblogs.com/maxiaotiaoshishui/p/7219142.html