• 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。
  • 相关阅读:
    P2422 良好的感觉
    拉格朗日插值
    C# 中的委托和事件(详解)
    异步委托
    ManualResetEvent详解
    快速理解C#高级概念事件与委托的区别
    拉格朗日多项式
    oracle 插入一个从别处查询获得字段的值
    decode和nvl的用法
    C#将像素值转换为图片
  • 原文地址:https://www.cnblogs.com/maxiaotiaoshishui/p/7219142.html
Copyright © 2020-2023  润新知