python: union()函数用法
在 Python 中,union()
是集合(set
)类型的内置方法,用于返回两个或多个集合的并集(即所有元素的合集,自动去重)。以下是它的用法详解:
1. 基本语法
python
复制
下载
set.union(*others)
# 或
set1 | set2 | set3 ...
-
参数:
others
可以是其他集合或任何可迭代对象(如列表、元组等)。 -
返回值:返回一个新集合,包含所有参与合并的集合中的唯一元素。
-
不修改原集合:原集合内容保持不变。
2. 基础用法示例
python
复制
下载
# 定义两个集合
set_a = {1, 2, 3}
set_b = {3, 4, 5}# 使用 union() 方法
result_union = set_a.union(set_b)
print(result_union) # 输出: {1, 2, 3, 4, 5}# 使用 | 运算符
result_operator = set_a | set_b
print(result_operator) # 输出: {1, 2, 3, 4, 5}
3. 合并多个集合
union()
支持一次合并多个集合或可迭代对象:
python
复制
下载
set_c = {5, 6, 7}
list_d = [7, 8, 9]# 合并多个集合和列表
combined = set_a.union(set_b, set_c, list_d)
print(combined) # 输出: {1, 2, 3, 4, 5, 6, 7, 8, 9}
4. 与其他数据类型的交互
union()
可以接受非集合类型(如列表、元组、字符串等)作为参数:
合并列表、元组
python
复制
下载
set_num = {1, 2}
list_str = ["a", "b"]
tuple_mix = (2, "c")# 合并集合、列表、元组
result_mixed = set_num.union(list_str, tuple_mix)
print(result_mixed) # 输出: {1, 2, 'a', 'c', 'b'}
合并字符串
「字符串」时可迭代类型,可以跟集合合并。
set1 = {1, 2, 3}new_set = set1.union('abc')print(new_set)
输出:
{1, 2, 3, 'a', 'c', 'b'}
合并字典
「字典」也是可迭代类型,可以跟集合合并;与其他类型不同的是,字典只合并键,不合并值。
set1 = {1, 2, 3}dict1 = {'key1': 1, 'key2': 2}new_set = set1.union(dict1)print(new_set)
输出:
{1, 2, 3, 'key1', 'key2'}
合并bytes类型
「bytes」也是可迭代类型,可以跟集合合并;但bytes是字节流,字符会转换后再合并。
set1 = {1, 2, 3}bytes1 = b'abc'new_set = set1.union(bytes1)print(new_set)
输出:
{1, 2, 3, 97, 98, 99}
5. 与 update()
的区别
-
union()
:返回新集合,不修改原集合。 -
update()
:在原集合上直接添加元素,修改原集合。
python
复制
下载
set_x = {1, 2}
set_y = {3, 4}# union() 示例
new_set = set_x.union(set_y)
print(set_x) # 原集合不变,输出: {1, 2}
print(new_set) # 输出: {1, 2, 3, 4}# update() 示例
set_x.update(set_y)
print(set_x) # 原集合被修改,输出: {1, 2, 3, 4}
6. 常见问题
错误用法
python
复制
下载
# 错误:参数需为可迭代对象,不能是单个非集合元素
set_a.union(3) # TypeError: 'int' object is not iterable# 正确:将数字放入可迭代对象中
set_a.union({3})
集合的无序性
集合的元素顺序是未定义的,输出时可能与添加顺序不同:
python
复制
下载
print({3, 1, 2} | {5, 4}) # 可能输出: {1, 2, 3, 4, 5}
7. 实际应用场景
-
数据去重:合并多个数据源并去除重复项。
-
标签系统:合并用户选择的多个标签集合。
-
数据库查询:模拟 SQL 中
UNION
操作。
总结
-
union()
是集合操作中高效的去重合并工具。 -
支持合并多个集合或可迭代对象。
-
若需保留元素顺序,需将结果转为列表后排序。