本文目录导读:

我来给你详细讲解Python集合并集的几种案例,从基础到进阶:
基础并集操作
使用 union() 方法
# 创建两个集合
set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}
# 使用 union() 方法
result = set1.union(set2)
print(result) # {1, 2, 3, 4, 5, 6, 7, 8}
使用 运算符
set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}
# 使用 | 运算符
result = set1 | set2
print(result) # {1, 2, 3, 4, 5, 6, 7, 8}
多个集合的并集
# 三个或更多集合的并集
set1 = {1, 2, 3}
set2 = {3, 4, 5}
set3 = {5, 6, 7}
# 方法1:链式调用
result1 = set1.union(set2, set3)
print(result1) # {1, 2, 3, 4, 5, 6, 7}
# 方法2:连续使用运算符
result2 = set1 | set2 | set3
print(result2) # {1, 2, 3, 4, 5, 6, 7}
实际应用案例
案例1:用户权限合并
# 不同用户组的权限
admin_permissions = {'read', 'write', 'delete', 'admin'}
user_permissions = {'read', 'write', 'upload'}
guest_permissions = {'read'}
# 合并所有权限
all_permissions = admin_permissions | user_permissions | guest_permissions
print(f"所有权限: {all_permissions}")
# 输出: 所有权限: {'read', 'write', 'delete', 'admin', 'upload'}
案例2:合并多个数据源
# 从不同来源收集的客户ID
source1_customers = {101, 102, 103, 104}
source2_customers = {103, 104, 105, 106}
source3_customers = {106, 107, 108}
# 合并所有客户(去重)
all_customers = set()
all_customers = all_customers.union(source1_customers, source2_customers, source3_customers)
print(f"所有客户ID: {sorted(all_customers)}")
# 输出: 所有客户ID: [101, 102, 103, 104, 105, 106, 107, 108]
案例3:标签系统合并
# 文章标签合并
article1_tags = {'python', '编程', '入门'}
article2_tags = {'python', '进阶', '面向对象'}
article3_tags = {'java', '编程', '入门'}
# 合并所有标签
all_tags = article1_tags | article2_tags | article3_tags
print(f"所有标签: {all_tags}")
# 输出: 所有标签: {'python', '编程', '入门', '进阶', '面向对象', 'java'}
与其他数据结构结合使用
# 列表转集合并合并
list1 = [1, 2, 3, 4, 5]
list2 = [4, 5, 6, 7, 8]
list3 = [7, 8, 9, 10]
# 先转集合再合并
result = set(list1) | set(list2) | set(list3)
print(f"合并后的集合: {sorted(result)}")
# 输出: 合并后的集合: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
性能对比
import time
# 大数据集合并集
big_set1 = set(range(1000000))
big_set2 = set(range(500000, 1500000))
# 测试 union() 性能
start = time.time()
result1 = big_set1.union(big_set2)
print(f"union() 耗时: {time.time() - start:.4f}秒")
# 测试 | 运算符性能
start = time.time()
result2 = big_set1 | big_set2
print(f"| 运算符耗时: {time.time() - start:.4f}秒")
# 两种方式性能相似,| 运算符更简洁
常见错误和注意事项
# ❌ 错误:混合数据类型可能导致类型错误
set1 = {1, 2, 3}
list1 = [4, 5, 6]
# result = set1 | list1 # 这行会报错!
# ✅ 正确:先转换类型
result = set1 | set(list1)
print(f"正确的结果: {result}") # {1, 2, 3, 4, 5, 6}
# ✅ 使用 union() 接受可迭代对象
result = set1.union(list1)
print(f"使用 union() 的结果: {result}") # {1, 2, 3, 4, 5, 6}
实用技巧
# 合并多个集合到空集合
sets = [{1, 2}, {3, 4}, {5, 6}, {2, 7}]
result = set().union(*sets) # 使用参数解包
print(f"多集合合并: {sorted(result)}") # [1, 2, 3, 4, 5, 6, 7]
# 条件合并
def conditional_union(sets, condition):
"""条件合并:只合并满足条件的集合"""
result = set()
for s in sets:
if condition(s):
result = result | s
return result
# 只合并大小大于2的集合
sets = [{1, 2}, {3, 4, 5}, {6}, {7, 8, 9}]
result = conditional_union(sets, lambda x: len(x) > 2)
print(f"条件合并结果: {sorted(result)}") # [3, 4, 5, 7, 8, 9]
| 方法 | 语法 | 特点 |
|---|---|---|
union() |
set1.union(set2) |
可接受多个参数,更灵活 |
| 运算符 | set1 \| set2 |
语法简洁,性能相当 |
| 多集合合并 | set().union(*sets) |
适合动态数量的集合 |
并集操作非常适合数据去重、权限合并、标签聚合等场景,建议根据具体需求选择合适的实现方式。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播