集合的基本操作和常规操作
1.定义
确定的一组无序的数据的集合,值不能重复
语法:{}、set()、集合推导式
False和0只能存在一个,True和1只能存在一个
列表放不进去
2.冰冻集合
v = frozenset()
一旦定义不能修改,只能做运算
本身就是一个强制转换类的函数,可以把其他任何容器类型的数据转为冰冻集合
3.集合推导式
# 普通推导式
varset ={1,2,3,4}
newset = {i<<1 for i in varset}
print(newset)
# {8, 2, 4, 6}
# 带条件表达式
newset={i<<1 for i in varset if i % 2 == 0 }
print(newset)
# {8, 4}
# 多循环表达式
var1 = {1,2,3,4}
var2 = {4,5,6}
newset={i+j for i in var1 for j in var2 }
print(newset)
# {5, 6, 7, 8, 9, 10}
# 带条件+多循环表达式
var1 = {1,2,3,4}
var2 = {4,5,6}
newset={i+j for i in var1 if i % 2 == 0 for j in var2 }
print(newset)
# {6, 7, 8, 9, 10}
4.集合运算
运算符:&、|、-、^
5.常用集合函数
set.add()
用于给集合添加元素
set = {1,2,3,4}
set.add(4)
set.add(5)
print(set)
# {1, 2, 3, 4, 5}
set.clear()
移除集合中的所有元素。
set = {1,2,3,4}
set.clear()
print(set)
# set()
set.copy()
拷贝一个集合
set = {1,2,3,4}
set1=set.copy()
print(set1)
# {1, 2, 3, 4}
set.difference()
返回集合的差集
set = {1,2,3,4}
set1 = {1,2,5,6}
print(set.difference(set1))
# {3, 4}
set.difference_update()
移除两个集合中都存在的元素,将第一个集合更新为差集
set = {1,2,3,4}
set1 = {1,2,5,6}
set.difference_update(set1)
print(set.difference_update(set1))
print(set)
print(set1)
# None
# {3, 4}
# {1, 2, 5, 6}
set.intersection()
返回交集。
set = {1,2,3,4}
set1 = {1,2,5,6}
print(set.intersection(set1))
# {1, 2}
set.intersection_update()
将第一个集合更新为两个集合的交集
set = {1,2,3,4}
set1 = {1,2,5,6}
print(set.intersection_update(set1))
print(set)
print(set1)
# None
# {1, 2}
# {1, 2, 5, 6}
set.symmetric_difference()
返回两个集合的对称差集
set = {1,2,3,4}
set1 = {1,2,5,6}
print(set.symmetric_difference(set1))
# {3, 4, 5, 6}
set.symmetric_difference_update()
将第一个集合更新为两个集合的对称集合
set = {1,2,3,4}
set1 = {1,2,5,6}
print(set.symmetric_difference_update(set1))
print(set)
print(set1)
# None
# {3, 4, 5, 6}
# {1, 2, 5, 6}
set.union()
返回两个集合的并集
set = {1,2,3,4}
set1 = {1,2,5,6}
print(set.union(set1))
# {1, 2, 3, 4, 5, 6}
set.update()
将第一个集合更新为并集。
set = {1,2,3,4}
set1 = {1,2,5,6}
print(set.update(set1))
print(set)
print(set1)
# None
# {1, 2, 3, 4, 5, 6}
# {1, 2, 5, 6}
set.discard() & pop() & remove()
移除指定的集合元素,不报错
随机移除一个集合元素,并返回该元素
移除指定的集合元素,返回None,不存在会报错
set = {1,2,3,4}
print(set.discard(1))
print(set)
# None
# {2, 3, 4}
set = {1,2,3,4}
print(set.pop())
print(set)
# 1
# {2, 3, 4}
set = {1,2,3,4}
print(set.remove(2))
print(set)
# None
# {1, 3, 4}
set.isdisjoint()
判断是否两个集合不相交
set = {1,2,3,4}
set1 = {1,2,5,6}
set2 = {5,6,7,8}
print(set.isdisjoint(set1))
print(set.isdisjoint(set2))
# False
# True
set.issuperset() & set.issubset()
检测是否是超集和子集
vars1 = {1,2,3,4}
vars2 = {1,2}
vars1.issuperset(vars2)
# True
vars1.issubset(vars2)
# False