什么是集合
set --- 集合,集合是无序的,集合的每一个元素都是唯一的,有去重性(也就是不会出现重复的元素),不能下标取值
属于可变类型,会直接修改原数据
set1 = {1, 2, 3}
空集合问题
# 空集合:空集合不能直接用{} , 否则就是字典类型
a = {}
print(type(a)) # dict 字典类型
b = set()
print(type(b)) # set 集合类型
集合的 --- 交 并 补
交:&
并:|
补(差):-
a = {1, 2, 3}
b = {1, 2, 4}
print(a & b) # {1, 2}
print(a | b) # {1, 2, 3, 4}
print(a - b) # {3}
集合 --- 增删改查
集合 --- 增
set1 = {1, 2, 3}
# add:添加
set1.add('a')
print(set1) # {1, 2, 3, 'a'}
集合 --- 删
# pop : 删除指定元素,受到无序性,唯一性, 所以将会随机删除
set2 = {1,2,3,4,5}
set2.pop()
print(set2)
set = {1, 2, 3}
# remove : 指定删除已知元素,元素不存在会报错
set2.remove(1)
print(set2) # {2, 3}
# 拓展,discard:与remove操作一样,区别是元素不存在不报错
set2 = {1, 2, 3}
# clear:清空集合里面的所有元素
set2.clear()
print(set2) # set()
集合 --- 改
set4 = {1, 2, 3, 'a'}
# 改:update ----- 可以批量加入
set4.update([1, 'f', 'g'])
print(set4) # {1, 2, 3, 'g', 'a', 'f'}
提问:为什么代码输出的不是 {1, 2, 3, 'a', 1, 'f', 'g'} ?有知道的可以在评论区评论一下
集合 --- 查
# isdisjoint: 判断是否没有交集 ---- 没有交集就是True,有交集就是False
# issubset: a.issubset(b) ---- 判断b集合里面是否存在a集合
# issuperset: a.issuperset(b) ---- 判断a集合里面是否存在b集合
set5 = {1, 2, 3, 'a'}
set6 = {1, 2}
set7 = {3, 'b'}
print(set5.isdisjoint(set7)) # False
print(set6.issubset(set5)) # True
print(set5.issuperset(set7)) # False
set5 = {1, 2, 3, 'a'}
set6 = {1, 2, 4}
# intersection:返回集合的交集
print(set5.intersection(set6)) # {1, 2}
print(set5 & set6) # {1, 2}
# union:返回两个集合的并集
print(set5.union(set6)) # {1, 2, 3, 'a', 4}
print(set5 | set6) # {1, 2, 3, 'a', 4}
# intersection_update:a.intersection_update(b) ----- 移除a集合中不存在于b集合中的元素
set5.intersection_update(set6)
print(set5) # {1, 2}
set5 = {1, 2, 3, 'a'}
set6 = {1, 2, 4}
# symmetric_difference:返回两个集合中不重复的元素集合
print(set5.symmetric_difference(set6)) # {3, 4, 'a'}