Python Programming

精通Python列表集合

Spread the love

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()

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注