#基础数据类型 set集合
#集合是一个可变的数据类型,它是以{}的形式存在,空集合为set()
#它要求里面的元素是不可变的,它是无序的,不重复的
#1、去重
#2、关系测试
# set = {1, 2, 3, 'abc', (1,2,3),True}
# 集合里面的元素是不可变的,当集合里含有数字0或者1
#或者'',()时,集合里的bool对应的True或False不会在集合里显示(去重了)。
#上面set里的True就不会显示。因为set里有数字1
# print(set)
# set = {1, 1, 1, 2, 3}
# print(set) #去除里面的重复元素
# 面试题:列表去重
# l1 = [11, 11, 22, 22, 33, 33, 33, 44]
# l2 = list(set(l1))
# l2.sort()
# print(l2)
#集合的增、删、查
# set1 = {'alex', 'WuSir', 'RiTiAn', 'egon', 'barry'}
#增:2种
# (1).add
# set1.add('gl')
# print(set1)
# (2).update(可迭代的) 迭代着增加
# set1.update('abc')
# set1.update([1, 2, 3])
# print(set1)
#删:4种
# (1).remove() 按元素删除
# set1.remove('alex')
# print(set1)
# (2).pop 随即删除,有返回值
# print(set1.pop())
# print(set1)
# (3).clear() 清空
# set1.clear()
# print(set1)
# (4)del 整体删除set
# del set1
# print(set1)
#查:1种
# for i in set1:
# print(i)
# set1 = {1, 2, 3, 4, 5}
# set2 = {4, 5, 6, 7, 8}
#交集:& intersetion
# set3 = set1 & set2
# print(set3)
# print(set1.intersection(set2))
#并集:| union
# set3 = set1 | set2
# print(set3)
# print(set1.union(set2))
#差集: - difference
# set3 = set1 - set2 #set1 独有的
# print(set3)
# print(set1.difference(set2))
#反交集: ^ symmetric_difference
# set3 = set1 ^ set2 #set1 与 set2 不共有的
# print(set3)
# print(set1.symmetric_difference(set2))
# set1 = {1, 2, 3}
# set2 = {1, 2, 3, 4, 5, 6}
#子集 < issubset
# print(set1 < set2) #True set1 是 set2的子集
# print(set1.issubset(set2)) #True set1 是set2的子集
# print(set2 > set1) #True set2 是 set1的超级
# print(set2.issuperset(set1)) #True set2 是 set1的超级
# set1 = frozenset({1, 2, 3, 'alex'})
# print(set1, type(set1))
# dic = {}
# dic.setdefault(set1,'haha')
# print(dic)
# 锁定,锁定后的集合是不可变的,锁定后的集合可作为字典的key