chapter3.2、set集和集合运算

集set

约定   set 翻译为集合,collection翻译为集合类型,是一个大概念

可变,无序,不重复,

可迭代,不可索引

定义

s= {} #特例,定义字典
s={1,2}
s1 = set(1,2)

set的元素要求必须可以hash

hash(1),hash('a'),hash(1,'a') 散列

集合,字典,列表,bytearray不可hash

set不能加,乘

add 增加   不能add 列表,集合,add是元素存在,什么都不做

update(*others) #就地修改,合并集合,参数other必须是可迭代对象

remove 删除,能少用就少用 返回None,不存在就返回KeyError

discard 移除元素返回None,没有就什么都不做

pop() -->item 弹出任意元素,空集返回KeyError

clear()  移除所有元素

不能修改,不可索引,不能用索引号查询

遍历 可以迭代所有数据

in 集合效率快,用空间换时间,O(1)

lst1=list(range(100))

lst2=list(range(100000))

-1 in lst1,-1 in lst2

set1=set(range(100))
set1=set(range(100000))

-1 in set1,-1 in set2

 线性结构的查询时间是O(n),随数据规模增大而增加耗时

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

 可变的数据结构不可hash,不可变的数据可以hash

可变的数据结构有列表,集合,字典,bytearray等

不可变的数据结构有字符串,元组,字节,数值型,布尔型,None等,可hash,hashzble

集合

基本概念

全集 所有元素的集合

子集subset和超集superset,  集合A所有元素都在另一个集合B内,A是B的子集,B是A的超集

真子集和真超集  A是B的子集,且A不等于B,A就是B的真子集,B是A的真超集

并集 多个集合的合并,A和B的元素合并到一起,组成的集合叫并集 

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

  运算符|  等同于union

  update(*other)多个集合合并,就地修改,不返回值
  |=  等同于update

交集,多个集合的公共部分,属于A且属于B的元素组成的集合

  intersection(*others)

  &  等同于intersection

  intersection_update(*other)

  &=  获取多个集合的并集,就地修改

差集 属于A且不属于B的元素组成的集合

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

  -  等同于difference

  difference_update  获取和多个集的差集,就地修改

  -=  等同于difference_update

对称差集  集合A和B,所有不属于A和B交集的元素组成的集合,记作(A-B)∪(B-A)

  symmetric_difference  返回和另一个集合的差集

  ^  等同于symmetric_difference

  symmetric_difference_update  获取和另一个集合的差集,就地修改

  ^=  等同于symmetric_difference_update

集合运算

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

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

issuperset(other)   判断当前集合是否为另一个集合的超集

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

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

猜你喜欢

转载自www.cnblogs.com/rprp789/p/9471614.html