python数据结构-set

1、概念

set翻译为集合

Collection翻译为集合类型,是一个大概念。

Set是可变的,无序的,不重复的,元素的集合.

空的大括号是字典,大括号里面有元素的称为set。

空的集合就是s=set()。     列表和bytes不能。

2、Set定义,初始化

()括号里面加可迭代的对象。

s1=set()

s2=set(range(5))

s6={(1,2),3,'a'}

必须是可hash()的才能够作为列表。

3、Set的元素。

Set的元素要求必须可以hash。目前不可以hash的类型有list、set。

元素不可以索引。

Set可以迭代。

 

 

4、Set增加

add(elem),如果元素存在什么都不做。 s.add('abc')   s.add(15)

5、Update(*others)

合并其他元素到set中。可以写多个可迭代对象。 就地修改。s.update('bcd')

6、元素移除。

remove()  discard()不管有没有都不会报出异常。。pop()

clear()移除所有元素清除。

7、set修改,查找。

 要么删除,要么加入新的元素。K就是对值进行求hash,然后房间放东西,查找的时候直接去房间拿东西。

成员运算符。In和no int判断元素是否在set中。 效率比较低。

8、set成员运算符的比较

list和set的比较。Set的效率比较高,原因是因为hash。

9、Set和线性结构。

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

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

10、不可变类型

成为可哈希类型。(想要哈希的话就应该有明确的值)。 拿所给的值。列出散落值。

 

11、可hash的类型。

数值型int 。float。Complex。

布尔值True  Flase

字符串string,bytes

tuple

None

都是不可变类型,成为可哈希的类型,hashable。

 

12、集合

1)概念。

1)全集

所有元素的集合,例如实数集,所有实数组成的集合就是全集。

2)子集(subset)和超集(superset)

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

3)真字集合真超集。

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

4)并集,多个集合合并的结果。

5)交集,多个集合公共的部分。

6)差集,集合中除去和其它集合公共部分。

7)并集:将两个集合A和B的所有元素合并到一起,组成的集合称作集合A和集合B的并集。Union(*others)   返回和多个集合合并后的新的集合。

8)|运算符重载  等同于union。

9)Update(*others)   和多个集合合并,就地修改。

10)|=等同于update。

11)交集:集合A和集合B,由所有属于A且属于B的元素组成的集合。

Intersection(*others) 返回和多个元素的交集。

&等同于intersection

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

&=等同于intersection_update.

12)  集合运算  差集

集合A和集合B,由所有不属于A且不属于B的元素组成的集合。

Difference(*others)  返回和对个集合的差集。

- 等同于difference

Difference_update(*others)

获取和多个集合的差集并就地修改。

-=等同于 difference_update

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

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

Symmetric_difference_update(other)获取和另一个几个的差集并就地修改。

^等同于Symmetic_difference

^=等同于Symmetric_difference_update

14)     集合运算。

Issubset(set)、<=  判断当前集合是否是另一个集合的子集。

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

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

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

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

 

2)集合去重,做随机运算。

13、   enumerate()

用法for i,v in enumerate():

显示编号,传入参数是字符串或者起始的编号。

posted @ 2018-11-12 16:00  Python爱好者666  阅读(670)  评论(0)    收藏  举报