本文目录导读:

我来详细介绍Python中合并多个列表的各种方法,配合实际案例说明。
使用 运算符(基础拼接)
# 简单合并两个列表 list1 = [1, 2, 3] list2 = [4, 5, 6] result = list1 + list2 print(result) # [1, 2, 3, 4, 5, 6] # 合并多个列表 list3 = [7, 8, 9] result = list1 + list2 + list3 print(result) # [1, 2, 3, 4, 5, 6, 7, 8, 9]
使用 extend() 方法
# 在原列表基础上扩展 list1 = [1, 2, 3] list2 = [4, 5, 6] list1.extend(list2) print(list1) # [1, 2, 3, 4, 5, 6] # 合并多个列表(链式调用) list1 = [1, 2, 3] list2 = [4, 5, 6] list3 = [7, 8, 9] list1.extend(list2) list1.extend(list3) print(list1) # [1, 2, 3, 4, 5, 6, 7, 8, 9]
使用 解包运算符(推荐)
# Python 3.5+ 支持 list1 = [1, 2, 3] list2 = [4, 5, 6] list3 = [7, 8, 9] result = [*list1, *list2, *list3] print(result) # [1, 2, 3, 4, 5, 6, 7, 8, 9] # 灵活组合 result = [0, *list1, 10, *list2, *list3, 99] print(result) # [0, 1, 2, 3, 10, 4, 5, 6, 7, 8, 9, 99]
使用 itertools.chain()
from itertools import chain list1 = [1, 2, 3] list2 = [4, 5, 6] list3 = [7, 8, 9] # 返回迭代器,节省内存 result = list(chain(list1, list2, list3)) print(result) # [1, 2, 3, 4, 5, 6, 7, 8, 9] # 处理大量数据时使用 large_list = list(chain.from_iterable([list1, list2, list3])) print(large_list) # [1, 2, 3, 4, 5, 6, 7, 8, 9]
使用列表推导式
list1 = [1, 2, 3] list2 = [4, 5, 6] list3 = [7, 8, 9] # 合并多个列表 lists = [list1, list2, list3] result = [item for sublist in lists for item in sublist] print(result) # [1, 2, 3, 4, 5, 6, 7, 8, 9] # 带条件过滤 result = [item for sublist in lists for item in sublist if item > 3] print(result) # [4, 5, 6, 7, 8, 9]
使用 numpy(数值计算)
import numpy as np list1 = [1, 2, 3] list2 = [4, 5, 6] result = np.concatenate([list1, list2]) print(result) # [1 2 3 4 5 6] # 合并多个 list3 = [7, 8, 9] result = np.concatenate([list1, list2, list3]) print(result) # [1 2 3 4 5 6 7 8 9]
实战案例
案例1:合并多个数据文件列表
# 模拟从多个文件中读取的数据
file1_data = [10, 20, 30]
file2_data = [40, 50, 60]
file3_data = [70, 80, 90]
# 方法1:使用 + 运算符
all_data = file1_data + file2_data + file3_data
print(f"方法1: {all_data}")
# 方法2:使用 extend(适合循环处理)
all_data = []
for data in [file1_data, file2_data, file3_data]:
all_data.extend(data)
print(f"方法2: {all_data}")
# 方法3:使用解包(最简洁)
all_data = [*file1_data, *file2_data, *file3_data]
print(f"方法3: {all_data}")
案例2:合并并去重
list1 = [1, 2, 3, 4]
list2 = [3, 4, 5, 6]
list3 = [5, 6, 7, 8]
# 合并并去重(保持顺序)
merged = []
for num in [*list1, *list2, *list3]:
if num not in merged:
merged.append(num)
print(f"去重结果: {merged}") # [1, 2, 3, 4, 5, 6, 7, 8]
# 使用 set(不保持顺序)
unique = list(set([*list1, *list2, *list3]))
print(f"set去重: {unique}") # [1, 2, 3, 4, 5, 6, 7, 8]
案例3:列表矩阵合并
# 合并二维列表
matrix1 = [[1, 2], [3, 4]]
matrix2 = [[5, 6], [7, 8]]
# 水平拼接(增加列)
horizontal = [row1 + row2 for row1, row2 in zip(matrix1, matrix2)]
print(f"水平拼接: {horizontal}") # [[1, 2, 5, 6], [3, 4, 7, 8]]
# 垂直拼接(增加行)
vertical = matrix1 + matrix2
print(f"垂直拼接: {vertical}") # [[1, 2], [3, 4], [5, 6], [7, 8]]
性能对比
import timeit
# 创建测试数据
list1 = list(range(1000000))
list2 = list(range(1000000, 2000000))
# 测试不同方法的性能
def test_plus():
return list1 + list2
def test_extend():
result = []
result.extend(list1)
result.extend(list2)
return result
def test_unpack():
return [*list1, *list2]
def test_chain():
from itertools import chain
return list(chain(list1, list2))
# 这里不实际运行,仅示意
print("性能排名(从快到慢):")
print("1. + 运算符(最快)")
print("2. 解包运算符")
print("3. extend()")
print("4. itertools.chain()")
选择建议
| 场景 | 推荐方法 | 原因 |
|---|---|---|
| 简单合并少量列表 | 运算符 | 直观、快速 |
| 合并大量列表 | itertools.chain() |
内存效率高 |
| 需要保持代码简洁 | 解包运算符 | 语法优美 |
| 在循环中累积添加 | extend() |
原地修改,性能好 |
| 需要条件过滤 | 列表推导式 | 灵活强大 |
| 数值计算 | numpy.concatenate() |
性能最优 |
选择哪种方法取决于你的具体需求:代码可读性、性能要求、内存限制等,对于大多数日常开发,使用 运算符或 解包运算符就足够了。
版权声明: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直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播