zoukankan      html  css  js  c++  java
  • 第二天python3 set常用方法

    set

    set的元素要求
    set的元素必须可hash,目前学过的不可hash的类型有list、set;

    1、元素不可以被索引

      可变的、无序的、不重复的元素的集合

    2、set可以被迭代

    set增加

      add(elem)

       增加一个元素到set中,如果元素存在则什么都不做;

      update(*others)

       合并其他元素到set集合中来;参数others必须是可迭代对象;就地修改;可以写多个可迭代对象;
    set删除

      remove(elem) 

        如果set中有删除对象,则删除,如果没有,则抛出keyError;
      discard(elem)

        元素存在则删除,不存在则什么都不做;

      pop()

        移除并返回任意元素,因为是无序的,所以是任意元素;

         空集合返回KeyError;

      clear()

        移除所有元素;

    set修改、查询

      set要么删除要么假如新的元素;

      非线性结果,无法被索引,可以迭代所有元素;

    成员运算符

      

      通过测试发现,set的处理速度明显比list要高很多;由于set中没有重复数据,则set会通过hash的方式将数据计算出一个唯一hash值;所以处理会比较快;

    set和线性结构
    线性结构的查询时间复杂度是O(n),即随着数据规模的增大而增加耗时;

    set、dict等结构,内部使用hash值作为key,时间复杂度可以做到O(1);查询时间和数据规模无关;

    可hash类型

      数值型int、float、complex

      布尔型True、False

      字符串string、bytes

      tuple

      None

      以上都是不可变类型,成为hash类型;

    set的元素必须是可hash的;

    集合运算

    并集

      union(*others) 返回和多个集合合并后的新的集合

      |运算符重载;等同于union;

      update(*others) 和多个集合合并,就地修改;

      |= 等同于update

    交集

      intersection(*others) 返回多个集合的交集

      & 等同于intersection

      intersection_update(*others) 获取和多个集合的交集,并就地修改;

      &= 等同于intersection_update

    差集

      differece(*others) 返回和多个集合的差集

      - 等同于difference

      difference_update(*others) 获取和多个集合的差集并就地修改;

      -= 等同于difference_update

    对称差集

      集合A和B,由所有不属于A和B的交集元素组成的集合,记作(A-B)U(B-A)

      symmetric_differece(other) 返回和另一个集合的差集

      ^ 等同于symmetric_differece

      symmetric_differece_update(other) 获取和另一个集合的差集并就地修改;

      ^= 等同于symmetric_differece_update

    issubset(other)、<=  判断当前集合是否是另一个集合的子集

    set1 < set2 判断set1是不是set2的真子集

    issuperset(other)、>=  判断当前集合是否是other的超集

    set1 > set2 判断set1是否是set的真超集

    isdisjoint(other)  判断当前集合和另一个集合有没有交集,没有交集,返回True;

  • 相关阅读:
    一夜风雨,夏入秋
    Starting,博客园的开通,渐行渐远
    The second day
    The first day study
    [前缀和] Jzoj P3913 艰难的选择
    [树形dp] Jzoj P3914 人品问题
    [匈牙利][Floyd] Jzoj P1015 导弹
    [高精度][规律][二分] Jzoj P4213 对你的爱深不见底
    [概率dp] Jzoj P4212 我想大声告诉你
    [最小割][最大流] 洛谷 P1345 奶牛的电信
  • 原文地址:https://www.cnblogs.com/zhangzhide/p/13058199.html
Copyright © 2011-2022 走看看