集合是无序的,容器类的数据类型,包含的元素是不可变的(是可哈希的)不能包含字典/list等,但是集合本身是可变的。
- 最重要的作用
- 集合的去重
- 关系测试(交集 & ,并集|, 差集 - ,反交集 ^)
# 集合创建set1 = set({'张三', '李四', False})
set1 = {'张三', '李四', False}
print(set1) # 由于是无序的,每次打印的值不一样
print('空字典', type({})) # 空字典{}
print('空集合', type(set())) # 空集合 set()
# 元素值不能直接更改,可以删除,在添加
# 增加元素
set1.add('王五')
print(set1)
set1.update('HELLO') # 没有返回值
print(set1) # {False, 'L', 'O', 'H', '张三', '王五', '李四', 'E'} 迭代着增加,天然去重,只有一个L
# 删除元素 按照元素删除,由于是无序的,所以不能按照索引删除
set1.remove(False)
# 随机删除
set1.pop()
set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}
# 交集 set1.intersection(set2)
t = (set1 & set2)
print(t) # {4, 5}
# 并集 set1.union(set2)
print(set1 | set2) # {1, 2, 3, 4, 5, 6, 7, 8}
# 差集 set1中有,set2中没有 set1.difference(set2) .
print(set1 - set2) # {1, 2, 3}
# 反交集 set2.symmetric_difference(set1)
print(set1 ^ set2) # {1, 2, 3, 6, 7, 8}
# 子集 set1.issubset(set2)
set1 = {1, 2, 3}
set2 = {1, 2, 3, 4, 5, 6}
print(set1 < set2)
# 超级 set2.issuperset(set1)
print(set2 > set1)
# 列表的去重, 但是返回的是无序的,如果还要按照之前的顺序 就不能用set了
l = [1, 5, 3, 1, 2, 5]
s = set(l)
l = list(s)
print(l) # [1, 2, 3, 5]