# author azure
# # set 集合(能够自动去重)
# s = {"周杰伦","的老师","你知道吗",(1,2,3),"周杰伦"} #不能装列表(不可哈希).元组可以
# print(s)



# lst = [11,24,45,6,7,876,989,789,789,11,2,55]
# s = set(lst) # 列表转换成集合(去重)
# lst=list(s)  # 集合还原成列表
# print(lst)


# 集合本身是可变的数据类型,即不可哈希,所以可以增删改查.
# # 增加  (重复内容不会增加)
# 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循环
# s = {"刘嘉玲", '关之琳', "王祖贤","张曼⽟", "李若彤"}
# for el in s:
#  print(el)

# 常用操作
s1 = {"刘能", "赵四", "⽪⻓⼭"}
s2 = {"刘科⻓", "冯乡⻓", "⽪⻓⼭"}
# # 交集
# # 两个集合中的共有元素
# print(s1 & s2) # {'⽪⻓⼭'}
# print(s1.intersection(s2)) # {'⽪⻓⼭'}

# # 并集
# print(s1 | s2) # {'刘科⻓', '冯乡⻓', '赵四', '⽪⻓⼭', '刘能'}
# print(s1.union(s2)) # {'刘科⻓', '冯乡⻓', '赵四', '⽪⻓⼭', '刘能'}
#
# # 差集
# print(s1 - s2) # {'赵四', '刘能'} 得到第⼀个中单独存在的
# print(s1.difference(s2)) # {'赵四', '刘能'}
#
# # 反交集
# print(s1 ^ s2) # 两个集合中单独存在的数据 {'冯乡⻓', '刘能', '刘科⻓', '赵四'}
# print(s1.symmetric_difference(s2)) # {'冯乡⻓', '刘能', '刘科⻓', '赵四'}

s1 = {"刘能", "赵四"}
s2 = {"刘能", "赵四", "⽪⻓⼭"}
# ⼦集
print(s1 < s2) # set1是set2的⼦集吗? True
print(s1.issubset(s2))

# 超集
print(s1 > s2) # set1是set2的超集吗? False
print(s1.issuperset(s2))

