'''集合的方法
set1.add() set1.update() set1.copy()
set1.pop() set1.remove() set1.discard()
set1.clear() set1.union()
set1.issubset() set1.issuperset() set1.isdisjoint()
set1.difference() set1.difference_update()
set1.intersection() set1.intersection_update()
set1.symmetric_difference() set1.symmetric_difference_update()
'''
set1 = {1, 2, 3}
# print(type(set1))
# 集合元素不得重复
# # 集合作用: 列表去重
list1 = [1, 2, 3, 2, 1, 3, 4, 'ppp']
list2 = list(set(list1))
print(list2)
print(type(list2))
# 空集合 set()
set2 = {} # 字典
print(type(set2))
set3 = set() # 空集合避免和字典搞混得用这种方式创建
print(type(set3))
# add():添加一个数据
set1.add(1000) # 同样添加的数随机放
print(set1)
# print(set1[0]) # 集合没有下标,不支持排序,无序
# update() # 追加多个数据,参数是一个列表
set1.update([1000])
set1.update([1000, 2000, 3000]) # update()里面添加的是一个序列,注意这里是无序的添加
set1.update('python') # 每次添加的位置不一样
print(set1)
# remove():没有这个数据是报错
set1.remove(1000) # 同之前的remove(要移除的数据),没有会报错
print(set1)
# discard(): 删除指定数据,如果没有这个数据,不做任何事
set1.discard('p')
print(set1)
# pop():返回值,集合中,用pop()删除数据,删除的是第一个数据
num = set1.pop()
print(num)
print(set1)
# 集合推导式
# 列表推导式 字典推导式 集合推导式
set3 = {i for i in range(10) if i % 2 == 0}
print(set3)
# & 交集
set10 = {1, 2, 3, 4}
set11 = {2, 3, 4, 5, 6}
print(set10 & set11)
# | 并集(包含所有不重复数据)
print(set10 | set11)
# print(set10 | list1) # 符号操作
print(set10.union(list1)) # union()具有相同的方法
print(set10.union(set11))
# - # 差集:取前面这个集合有的数据,后面没有的数据
print(set10 - set11)
print(set11 - set10)