set collection
set of elements is not repeated, disordered
Elements must be inside the hash, (int str tuple bool)
dict type of data is set, but not only save key set stored value set also expressed by {}
set () represents the empty set
Deduplication
lst = [1,2,3,3,3,3,4,4,5,6] s = set(lst) lst = list(s) print(lst) # [1, 2, 3, 4, 5, 6]
Deletions change search set
set set CRUD
increase
s = {"刘嘉玲", '关之琳', "王祖贤"} s.add("郑裕玲") print(s) s.add("郑裕玲") # 重复的内容不会被添加到set集合中 print(s) s = {"刘嘉玲", '关之琳', "王祖贤"} s.update("麻花藤") # 迭代更新 print(s) s.update(["张曼玉", "李若彤","李若彤"]) print(s)
delete
s = {"刘嘉玲", '关之琳', "王祖贤","张曼玉", "李若彤"} item = s.pop() # 随机弹出⼀个. print(s) print(item) s.remove("关之琳") # 直接删除元素 s.remove("马虎疼") # 不不存在这个元素. 删除会报错 print(s) s.clear() # 清空set集合.需要注意的是set集合如果是空的. 打印出来是set() 因为要和dict区分的. print(s) # set()
modify
# set集合中的数据没有索引. 也没有办法去定位一个元素. 所以没有办法进⾏直接修改. # 我们可以采用先删除后添加的方式来完成修改操作 s = {"刘嘉玲", '关之琳', "王祖贤","张曼玉", "李若彤"} # 把刘嘉玲改成赵本⼭山 s.remove("刘嘉玲") s.add("赵本山") print(s)
Inquire
set是⼀一个可迭代对象. 所以可以进行for循环 for el in s: print(el)
Frequently used Operational
s1 = {"刘能", "赵四", "皮长山"} s2 = {"刘科长", "冯乡⻓", "皮长山"} # b交集 两个集合中的共有元素 print(s1 & s2) # {'皮长山'} print(s1.intersection(s2)) # {'皮长山'}
print(s1 - s2) #差集 print(s1 | s2) #并集 (合集) print(s1 & s2) #交集 print(s1 ^ s2) #对称差集 -- 反交集 print(s1 > s2) # 超集 -- 父集 print(s1 < s2) # 子集 冻结集合(可变 转换成 不可变) -- 更不常用 f_s = frozenset({1,2,3,4,5}) dic = {f_s:"1"} print(dic)