Set 常用方法
类型基础介绍见 Python 数据类型。
增删方法
| 方法 | 说明 | 示例 |
|---|---|---|
add(x) | 添加元素 | {1}.add(2) → {1, 2} |
update(iterable) | 批量添加 | {1}.update([2, 3]) → {1, 2, 3} |
remove(x) | 删除元素,不存在时抛 KeyError | {1, 2}.remove(1) → {2} |
discard(x) | 删除元素,不存在时不报错 | {1, 2}.discard(10) → {1, 2} |
pop() | 随机移除并返回一个元素 | {1, 2}.pop() → 1 |
clear() | 清空集合 | {1, 2}.clear() → set() |
nums = {1, 2, 3}
nums.add(4) # {1, 2, 3, 4}
nums.discard(10) # 元素不存在,不报错
# nums.remove(10) # KeyError: 10
print(nums) # {1, 2, 3, 4}
集合运算
| 运算 | 操作符 | 方法 | 示例(a=3, b=4) |
|---|---|---|---|
| 并集 | | | union() | a | b → {1, 2, 3, 4} |
| 交集 | & | intersection() | a & b → {2, 3} |
| 差集 | - | difference() | a - b → {1} |
| 对称差 | ^ | symmetric_difference() | a ^ b → {1, 4} |
a = {1, 2, 3}
b = {2, 3, 4}
print(a | b) # {1, 2, 3, 4}
print(a & b) # {2, 3}
print(a - b) # {1}
print(a ^ b) # {1, 4}
子集与超集判断
| 方法/操作符 | 说明 | 示例 |
|---|---|---|
<= / issubset() | 是否为子集 | {1, 2} <= {1, 2, 3} → True |
>= / issuperset() | 是否为超集 | {1, 2, 3} >= {1} → True |
frozenset
frozenset 是不可变版本的集合,因此可以作为字典的键,或放入其他集合中:
fs = frozenset([1, 2, 3])
# fs.add(4) # AttributeError: 'frozenset' object has no attribute 'add'