第二天python3 set常用方法

set

第二天python3 set常用方法

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

第二天python3 set常用方法

1、元素不可以被索引

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

2、set可以被迭代

set增加

  add(elem)

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

  update(*others)

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

remove(elem) 

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

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

pop()

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

     空集合返回KeyError;

clear()

  移除所有元素;

set修改、查询

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

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

成员运算符

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

相关推荐