# 集合:会保留下来唯一的那些元素 set()
# 集合是把list操作中去除一些不必要的东西。set()的作用主要是去重操作
'''
列表 tang=[]
字典 tang={}
集合 tang=set()
'''
tang = [123, 123, 456, 789]
tang = set(tang)
print(tang) # {456, 123, 789}
tang = set()
print(type(tang)) #
tang = set([123, 123, 123, 456, 456, 456, 789]) # 集合的话,里面必须放个[]
print(tang) # {456, 123, 789}
tang = {1, 1, 1, 3, 4} # 大括号中不写key-value对的话,它是集合。写的话它是字典
print(tang) # {1, 3, 4}
# 集合的操作
a = {1, 2, 3, 4}
b = {2, 3, 4, 5}
# 求并集 union 、|
print(a.union(b)) # {1, 2, 3, 4, 5}
print(b.union(a)) # {1, 2, 3, 4, 5}
print(a | b) # {1, 2, 3, 4, 5}
# 求交集 intersection、&
print(a.intersection(b)) # {2, 3, 4}
print(b.intersection(a)) # {2, 3, 4}
print(a & b) # {2, 3, 4}
# 查看差异
print(a.difference(b)) # a集合和b集合相比,b中没有1 结果:{1}
print(b.difference(a)) # b集合和a集合相比,a中没有5 结果:{5}
print(a - b) # 相当于 a.difference(b) 结果:{1}
print(b - a) # 相当于 b.difference(a) 结果:{5}
# 判断是否是子集
a = {1, 2, 3, 4, 5, 6}
b = {2, 3, 4}
print(b.issubset(a)) # b是不是a的子集? 结果: true
print(a.issubset(b)) # a是不是b的子集? 结果:false
print(b <= a) # Ture
print(b > a) # False
print(a <= a) # 对自己也可以进行一系列的判断,自己是自己的子集 # Ture
print(a < a) # False
# 向集合中加一个值 add、update
a = {1, 2, 3}
a.add(4)
print(a) # {1, 2, 3, 4}
a.update([4, 5, 6])
print(a) # {1, 2, 3, 4, 5, 6}
# remove 是删除
a.remove(1)
print(a) # {2, 3, 4, 5, 6}
# 集合是没有顺序的,摆放顺序是随意的,所以不能用数字的。所以pop()中不能有任何参数
print(a.pop()) # 2