集合(set)是 Python 中的可变无序、无重复元素的数据容器。它常用于去重、集合运算(交并差对称差)等。
一、增、删、改元素
add(x)
用于向集合添加一个元素。若元素已存在,则不变。
参数:
x:要添加的元素,必须可哈希(如数字、字符串、元组)。
返回值:无,直接修改原集合。
示例:
s = {1, 2}
s.add(3)
print(s) # {1, 2, 3}
s.add(2)
print(s) # {1, 2, 3},不会重复添加update(iterable)
用于批量添加多个元素。
参数:
iterable:可迭代对象(如列表、集合、字符串等)。
返回值:无,直接修改原集合。
示例:
s = {1, 2}
s.update([2, 3, 4])
print(s) # {1, 2, 3, 4}注意:
在集合运算语境中,update() 也表示“并集更新”,等价于 |=。
remove(x)
用于删除指定元素。若不存在,抛出 KeyError。
参数:
x:要删除的元素。
返回值:无,直接修改原集合。
示例:
s = {1, 2, 3}
s.remove(2)
print(s) # {1, 3}
# s.remove(9) # ❌ KeyErrordiscard(x)
用于删除指定元素。若不存在,也不会报错。
参数:
x:要删除的元素。
返回值:无,直接修改原集合。
示例:
s = {1, 2, 3}
s.discard(2)
print(s) # {1, 3}
s.discard(9) # 不报错
print(s) # {1, 3}pop()
随机删除并返回一个元素。集合无序,因此不能指定索引。
参数:无。
返回值:被删除的元素。若集合为空,抛出 KeyError。
示例:
s = {10, 20, 30}
print(s.pop()) # 随机删除并返回一个元素(不可预测)
print(s) # 剩余集合clear()
用于清空集合所有元素。
参数:无。
返回值:无,直接修改原集合。
示例:
s = {1, 2, 3}
s.clear()
print(s) # set()二、集合运算方法
union(*others) 或 |
返回集合的并集。
参数:
*others:一个或多个集合/可迭代对象。
返回值:新集合(不会修改原集合)。
示例:
a = {1, 2}
b = {2, 3}
print(a.union(b)) # {1, 2, 3}
print(a | b) # {1, 2, 3}intersection(*others) 或 &
返回集合的交集。
参数:
*others:一个或多个集合/可迭代对象。
返回值:新集合。
示例:
a = {1, 2, 3}
b = {2, 3, 4}
print(a.intersection(b)) # {2, 3}
print(a & b) # {2, 3}difference(*others) 或 -
返回差集(存在于自身但不在对方集合中的元素)。
参数:
*others:一个或多个集合/可迭代对象。
返回值:新集合。
示例:
a = {1, 2, 3}
b = {2, 3, 4}
print(a.difference(b)) # {1}
print(a - b) # {1}symmetric_difference(other) 或 ^
返回对称差集(在一个集合中但不同时出现在两个集合的元素)。
参数:
other:另一个集合/可迭代对象。
返回值:新集合。
示例:
a = {1, 2, 3}
b = {2, 3, 4}
print(a.symmetric_difference(b)) # {1, 4}
print(a ^ b) # {1, 4}原地更新方法
集合还提供了“原地修改”版本:
update():并集更新,相当于 |=
intersection_update():交集更新,相当于 &=
difference_update():差集更新,相当于 -=
symmetric_difference_update():对称差集更新,相当于 ^=
示例:
a = {1, 2, 3}
b = {2, 3, 4}
a.intersection_update(b)
print(a) # {2, 3}三、关系测试方法
issubset(other) 或 <=
用于判断当前集合是否是 other 的子集。
参数:
other:另一个集合/可迭代对象。
返回值:布尔值。
示例:
a = {1, 2}
b = {1, 2, 3}
print(a.issubset(b)) # True
print(a <= b) # Trueissuperset(other) 或 >=
用于判断当前集合是否是 other 的超集。
参数:
other:另一个集合/可迭代对象。
返回值:布尔值。
示例:
a = {1, 2, 3}
b = {1, 2}
print(a.issuperset(b)) # True
print(a >= b) # Trueisdisjoint(other)
用于判断两个集合是否无交集。
参数:
other:另一个集合/可迭代对象。
返回值:布尔值。
示例:
a = {1, 2}
b = {3, 4}
print(a.isdisjoint(b)) # True四、复制与拷贝
copy()
返回集合的浅拷贝。
参数:无。
返回值:新集合对象。
示例:
s1 = {1, 2, 3}
s2 = s1.copy()
print(s2) # {1, 2, 3}
print(s1 is s2) # False,不同对象集合很少需要深拷贝,因为元素必须是不可变对象。但若集合中包含自定义可变对象,建议使用深拷贝 来避免引用共享。
五、与集合常搭配的内置函数
len(s):返回集合大小。
max(s) / min(s):返回最大/最小值。
sum(s):对数值型集合求和。
:返回排序后的列表(不会修改原集合)。
示例:
s = {5, 1, 9, 2}
print(len(s)) # 4
print(max(s)) # 9
print(min(s)) # 1
print(sum(s)) # 17
print(sorted(s)) # [1, 2, 5, 9]小结
集合(set)是可变、无序、不重复的数据容器。
元素操作:add()、update()、remove()、discard()、pop()、clear()
集合运算:并集、交集、差集、对称差集(及其原地版本)
关系测试:issubset()、issuperset()、isdisjoint()
复制:copy()
常配合函数:len()、sum()、max()、min()、sorted()
“点赞有美意,赞赏是鼓励”
热门跟贴