# 集合,集合中只可以存储不可变对象
# 集合中的对象不是按照插入顺序存储,集合内部会自动排序
# 集合中不能出现重重复的元素
# 创建集合
s = {1,2,3,4,1,1} # 重复的会自动去除
# s = {[1,2],[3,4]} 报错
print(s,type(s))
# 使用set()创建
s = set([1,2,3,4,5])
s = set('hello')
s = set({'a':1,'b':2}) # 集合中只会保存字典中的key
print(s)
s = {'a','b',1,2,3,4}
# in , not in 检查集合中的元素
print('c' in s)
# len() 获取集合长度
print(len(s))
# add() 向几个中添加元素
s.add('c')
s.add(5)
print(s)
# update() 将一个集合中的元素添加到当前集合中
s1 = set('hello')
s1 = [1,2,3]
s1 = 10,20,30
s1 = {'A':11,'B':22}
s.update(s1)
print(s)
# pop() 随机删除集合中元素
print(s.pop())
# remove() 删除集合中指定值
s.remove('a')
s.remove('b')
print(s)
# clear() q清空集合
# s.clear()
# copy() 对集合浅copy
# 集合的交集运算
s1 = {2,3,4}
print(s1)
s2 = s & s1 # 交集,返回两个集合中共有的元素
print(s2)
s2 = s | s1 # 并集,返回两个集合中所有的元素,
print(s2) #
s2 = s - s1
print(s2) # 差集,返回s中有,s1中没有的元素
s2 = s ^ s1 # 异或集,返回只在一个集合中出现的元素
print(s2)
# <= 检查一个集合是否是另一个集合的子集
# 如果s1集合中的元素在s中全部出现,那么集合s1就是集合s的子集,s就是s1的超集
# >= 反之同理
s2 = s1 <= s
print(s2)
# < 检查一个集合是否是另一个集合的真子集
# 如果超集s中含有子集s1中所有元素,并且s中还有s1中没有的元素,s就是s1的真超集,s1就是s的真子集
# 换句话说就是s和s1不存在相等的情况他们就是真超集和真子集的关系
s2 = s1 < s
print(s2)