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