Python 提供了几种组合列表的方法,取决于您是否要保留重复项以及顺序是否重要。本指南探讨了有效处理列表联合的各种技术。
目录
包含重复元素的联合
组合两个列表,保留所有元素及其重复项的最简单方法是使用+
运算符:
list1 = [1, 2, 2, 3]
list2 = [3, 4, 2]
union_list = list1 + list2
print(union_list) # 输出:[1, 2, 2, 3, 3, 4, 2]
排序后的联合
对于排序后的联合,将+
运算符与sorted()
函数结合使用:
list1 = [1, 2, 2, 3]
list2 = [3, 4, 2]
union_list = sorted(list1 + list2)
print(union_list) # 输出:[1, 2, 2, 2, 3, 3, 4]
不包含重复元素的联合
要创建不包含重复项的联合,请使用集合:
list1 = [1, 2, 2, 3]
list2 = [3, 4, 2]
union_set = set(list1) | set(list2) # 或 set(list1).union(list2)
union_list = list(union_set) # 如需,转换回列表
print(union_list) # 输出:[1, 2, 3, 4](顺序可能不同)
集合会自动去除重复项。请注意,结果列表中元素的顺序可能与原始列表中的顺序不同。
多个列表的联合
对于两个以上的列表,集合方法仍然高效:
list1 = [1, 2, 3]
list2 = [3, 4, 5]
list3 = [5, 6, 1]
union_set = set(list1) | set(list2) | set(list3)
union_list = list(union_set)
print(union_list) # 输出:[1, 2, 3, 4, 5, 6](顺序可能不同)
# 使用 reduce 的更具可扩展性的解决方案:
from functools import reduce
union_list = list(reduce(lambda x,y: x | y, [set(l) for l in [list1, list2, list3]]))
print(union_list) # 输出:[1, 2, 3, 4, 5, 6](顺序可能不同)
reduce
函数为多个列表提供了更简洁且更具可扩展性的解决方案。请记住,元素的顺序可能不会保留;如果顺序很重要,请使用sorted()
。