# ### 1.集合的相关操作 (交差并补)
# intersection() 交集
set1 = {"易烊千玺","王一博","刘某PDD","王文"}
set2 = {"倪萍","赵忠祥","金龟子大风车","小龙人","王文"}
![]()
res = set1.intersection(set2)
print(res) #{'王文'}
# 简写 &
res = set1 & set2
print(res) #{'王文'}
# difference() 差集
res = set1.difference(set2)
print(res) #{'刘某PDD', '易烊千玺', '王一博'}
# 简写 -
res = set1 - set2
print(res) #{'刘某PDD', '易烊千玺', '王一博'}
#union() 并集
res = set1.union(set2)
print(res) #{'刘某PDD', '赵忠祥', '倪萍', '易烊千玺', '王一博', '小龙人', '金龟子大风车', '王文'}
# 简写 |
res = set1 | set2
print(res) #{'刘某PDD', '赵忠祥', '倪萍', '易烊千玺', '王一博', '小龙人', '金龟子大风车', '王文'}
#symmetric_difference() 对称差集 (补集情况涵盖在其中)
res = set1.symmetric_difference(set2)
print(res) #{'刘某PDD', '赵忠祥', '易烊千玺', '王一博', '小龙人', '倪萍', '金龟子大风车'}
# 简写 ^
res = set1 ^ set2
print(res) #{'刘某PDD', '赵忠祥', '易烊千玺', '王一博', '小龙人', '倪萍', '金龟子大风车'}
#issubset() 判断是否是子集
set1 = {"刘德华","郭富城","张学友","王文"}
set2 = {"王文"}
res = set2.issubset(set1)
print(res) #True
# 简写
res = set2 < set1
print(res) #True
#issuperset 判断是否是父集
set1 = {"刘德华","郭富城","张学友","王文"}
set2 = {"王文"}
res = set1.issuperset(set2)
print(res) #True
# 简写
res = set1 > set2
print(res) #True
#isdisjoint() 检测两集合是否不相交 不相交 True 相交False
set1 = {"刘德华","郭富城","张学友","王文"}
set2 = {"王文"}
res = set1.isdisjoint(set2)
print(res) #False
# ### 2.集合的相关函数
# 增
#add() 向集合中添加数据
# 一次加一个
set1 = {"王文"}
set1.add("王伟")
print(set1) #{'王伟', '王文'}
#update() 迭代着增加
# 一次加一堆
set1 = {"王文"}
lst = ["a","b","c"]
set1.update(lst) #["a","b","王文","c"]
lst = "ppp" # 迭代这添加,无序,会自动去重
set1.update(lst)
print(set1) #{'p', '王文'}
# 删
setvar = {'刘某PDD','小龙人','倪萍','赵忠祥'}
#clear() 清空集合
# setvar.clear()
# print(setvar) #set()
#pop() 随机删除集合中的一个数据
# res = setvar.pop()
# print(res)
# print(setvar) #倪萍
#discard() 删除集合中指定的值(不存在的不删除 推荐使用) ***
setvar.discard("刘某PDD111111") # success
# setvar.discard("刘某PDD")
# print(setvar) #{'刘某PDD','小龙人','倪萍','赵忠祥'}
#remove() 删除集合中指定的值(不存在则报错) (了解)
# setvar.remove("刘某PDD111") # error
# setvar.remove("刘某PDD")
# print(setvar) #{'小龙人','倪萍','赵忠祥'}
# ### 3.冰冻集合 (额外了解)
"""frozenset 单纯的只能做交差并补操作,不能做添加或者删除的操作"""
lst = ["王文","宋健","何旭彤"]
fz1 = frozenset(lst)
print(fz1, type(fz1)) #frozenset({'何旭彤', '宋健', '王文'}) <class 'frozenset'>
# 不能再冰冻集合中添加或者删除元素
# fz1.add(1) #error
# fz1.update("abc") #error
# fz1.discard("王文") #error
# 冰冻集合只能做交差并补
lst2 = ["王文","王同培","刘一缝"]
fz2 = frozenset(lst2)
print(fz2, type(fz2)) #frozenset({'王同培', '刘一缝', '王文'}) <class 'frozenset'>
# 交集
res = fz1 & fz2
print(res) #frozenset({'王文'})
# 遍历冰冻集合
for i in fz2:
print(i)
"""
王同培
刘一缝
王文
"""