一. 集合set
1.定义:set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以在set中没有重复的key。
# set中元素是无序的(哈希值分配),重复的元素被自动过滤掉
# set中的元素是不可变的类型,列表和字典是不能放进集合中的
# 空集合定义:a = set()
2.增删改查:
增
add():无序添加
update():
# 将字符串更新进入集合中,打散打乱字符,并放入集合
# 将列表更新进入集合,将列表的元素分别插入集合
# 上述操作,id始终未发生改变
删:clear(),remove,pop,discard(找不到不会报错)
改:因为元素是不可变,所以变相为先删再添加,来进行更改
查:遍历,in ,not in
3.集合的运算:交,差,并,反交
注:集合的运算是返回一个结果,对原来的两个集合并不会产生影响
A.交集运算(& 或 intersection)
B.并集运算:将两个集合当中的所有元素都呈现出来,并去重(| 或 UNION)
C.差集:-,或difference,结果保留被减数剩下的内容。
D.异或集/对称差集(^,symmetric_difference):只得到在一个集合中存在的元素
E.子集或超集:
# 如果集合a当中的元素都包含于集合b,那么可以说a是b的子集,b是a的超集。
# 用<=检查一个集合是否是另一个集合的子集
# 用模式issubset()判断a是否是b的子集,用issuperset判断a是否是b的超集
# 真子集:如果集合a中的元素都是集合b中的元素,同时b中还有a没有的元素,那么可以说a是b的真子集。
# 判断真子集,用 <
F.相交与不相交:isdisjoint()——>判断是否不相交
4.应用
A. 列表去重:利用集合的定义,自动过滤重复元素。
# 注:但是可能会打乱原本的顺序,因为集合是无序的。
5.番外:冰冻集合
定义:frozenset,冰冻一旦创建,或者转化成功,就不再支持增删改查,只支持集合运算
小结: