集合(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)   # ❌ KeyError

discard(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)          # True

issuperset(other) 或 >=

用于判断当前集合是否是 other 的超集。

参数:

other:另一个集合/可迭代对象。

返回值:布尔值。

示例:

a = {1, 2, 3}
b = {1, 2}
print(a.issuperset(b))   # True
print(a >= b)            # True

isdisjoint(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()

点赞有美意,赞赏是鼓励