第二天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;

posted @ 2020-06-07 00:46  潇湘神剑  阅读(468)  评论(0编辑  收藏  举报