set集合
-
set 中的元素是不重复的,无序的
-
里面的元素必须是可hash的,(int str tuple bool)
-
set 就是dict 类型的数据,但是不保存value 只保存 key set集合也用{}表示
-
set() 表示空集合
-
去重复
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]
集合的增删改查
set集合增删改查
-
增加
s = {"刘嘉玲", '关之琳', "王祖贤"} s.add("郑裕玲") print(s) s.add("郑裕玲") # 重复的内容不会被添加到set集合中 print(s) s = {"刘嘉玲", '关之琳', "王祖贤"} s.update("麻花藤") # 迭代更新 print(s) s.update(["张曼玉", "李若彤","李若彤"]) print(s)
-
删除
s = {"刘嘉玲", '关之琳', "王祖贤","张曼玉", "李若彤"} item = s.pop() # 随机弹出⼀个. print(s) print(item) s.remove("关之琳") # 直接删除元素 s.remove("马虎疼") # 不不存在这个元素. 删除会报错 print(s) s.clear() # 清空set集合.需要注意的是set集合如果是空的. 打印出来是set() 因为要和dict区分的. print(s) # set()
-
修改
# set集合中的数据没有索引. 也没有办法去定位一个元素. 所以没有办法进⾏直接修改. # 我们可以采用先删除后添加的方式来完成修改操作 s = {"刘嘉玲", '关之琳', "王祖贤","张曼玉", "李若彤"} # 把刘嘉玲改成赵本⼭山 s.remove("刘嘉玲") s.add("赵本山") print(s)
-
查询
set是⼀一个可迭代对象. 所以可以进行for循环 for el in s: print(el)
-
常⽤用操作
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)