你想了解 Python 集合(set)的常用操作方法,我会按功能分类整理这些核心方法,并结合示例说明用法,让你能快速掌握各类操作的适用场景。
一、元素添加方法
这类方法用于向集合中新增元素,核心是保证元素唯一性(自动去重)。
方法
作用
示例
add()
添加单个不可变元素,元素已存在则无操作
```python
fruits = {"apple", "banana"}fruits.add("cherry") # {'apple', 'banana', 'cherry'}fruits.add("apple") # 无变化(去重)| | `update()` | 添加**多个**元素(接收可迭代对象:列表、元组、字符串等),自动去重 |pythonfruits.update(["orange", "grape"]) # 添加列表fruits.update(("pear", "apple")) # 添加元组(apple 去重)
结果:{'apple', 'banana', 'cherry', 'orange', 'grape', 'pear'}
``` |
二、元素删除方法
这类方法用于移除集合中的元素,重点注意「元素不存在时是否报错」的区别。
方法
作用
注意事项
示例
remove()
删除指定元素
元素不存在会抛出 KeyError
```python
fruits = {"apple", "banana"}fruits.remove("banana") # 成功删除
fruits.remove("orange") # 报错:KeyError: 'orange'
| | `discard()` | 删除指定元素 | 元素不存在也**不会报错**(推荐优先使用) |pythonfruits.discard("apple") # 成功删除fruits.discard("orange") # 无操作,不报错| | `pop()` | 随机删除并返回一个元素 | 集合无序,无法预测删除哪个;空集合调用会报错 |pythonnums = {1, 2, 3}removed = nums.pop() # 随机返回 1/2/3 中的一个print(nums) # 剩余两个元素| | `clear()` | 清空集合所有元素,变为空集合 | - |pythonnums.clear() # nums 变为 set()``` |
三、集合运算方法
这类方法对应数学中的集合操作(并集、交集、差集等),分为「返回新集合」和「原地修改集合」两类。
1. 返回新集合(不修改原集合)
方法
等价运算符
作用
示例
union()
`
`
求两个集合的并集(所有元素,去重)
```python
a = {1,2,3}; b = {3,4,5}print(a.union(b)) # {1,2,3,4,5}print(a | b) # 等价写法| | `intersection()` | `&` | 求两个集合的**交集**(共同元素) |pythonprint(a.intersection(b)) # {3}print(a & b) # 等价写法| | `difference()` | `-` | 求**差集**(属于a但不属于b的元素) |pythonprint(a.difference(b)) # {1,2}print(a - b) # 等价写法| | `symmetric_difference()` | `^` | 求**对称差集**(只在一个集合中出现的元素) |pythonprint(a.symmetric_difference(b)) # {1,2,4,5}print(a ^ b) # 等价写法``` |
2. 原地修改集合(直接修改原集合,无返回值)
方法
作用
示例
intersection_update()
原地保留交集,修改原集合
```python
a = {1,2,3}; b = {3,4,5}a.intersection_update(b)print(a) # {3}(原a被修改)| | `difference_update()` | 原地保留差集,修改原集合 |pythona = {1,2,3}; b = {3,4,5}a.difference_update(b)print(a) # {1,2}(原a被修改)| | `symmetric_difference_update()` | 原地保留对称差集,修改原集合 |pythona = {1,2,3}; b = {3,4,5}a.symmetric_difference_update(b)print(a) # {1,2,4,5}(原a被修改)``` |
四、集合关系判断方法
用于判断两个集合的包含、相交关系。
方法
等价运算符
作用
示例
issubset()
<=
判断当前集合是否是另一个集合的子集
```python
a = {2,3}; b = {1,2,3,4}print(a.issubset(b)) # True(a的所有元素都在b中)print(a <= b) # 等价写法| | `issuperset()` | `>=` | 判断当前集合是否是另一个集合的**超集** |pythonprint(b.issuperset(a)) # True(b包含a的所有元素)print(b >= a) # 等价写法| | `isdisjoint()` | - | 判断两个集合是否**无交集**(没有共同元素) |pythonc = {5,6}print(a.isdisjoint(c)) # True(a和c无共同元素)print(a.isdisjoint(b)) # False(有交集)``` |
五、其他常用操作
方法/函数
作用
示例
copy()
浅拷贝集合,生成新集合
```python
a = {1,2,3}; b = a.copy()b.add(4) # a 仍为 {1,2,3},b 为 {1,2,3,4}| | `len()` | 获取集合元素个数 |pythonprint(len({1,2,3})) # 3| | `in`/`not in` | 判断元素是否在集合中(效率远高于列表) |pythonprint(2 in {1,2,3}) # Trueprint(4 not in {1,2,3}) # True``` |
总结
添加元素:add()(单个)、update()(多个);
删除元素:优先用 discard()(不报错),明确元素存在时用 remove(),随机删除用 pop();
集合运算:并集(union()/|)、交集(intersection()/&)是最常用的两类运算;
核心特性:集合自动去重、查找效率高,适合去重、成员判断、集合关系分析场景。