You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

多列表元素按序逐个合并的高效实现方法

你的实现效率分析与最优方案

当前实现的效率

你的代码逻辑可行,但不算最高效。原因在于:

  • 每次循环都要创建临时列表 [i, j, k],会产生额外内存开销;
  • Python 层面的 for 循环 + extend 操作,执行速度不如内置的底层优化函数。

不过对于小规模列表来说,这种差异几乎可以忽略,只有当列表元素数量非常大时,效率差距才会显现。

最高效的实现方法

推荐两种比你的实现更高效的方案,均利用 Python 内置优化机制:

方案1:使用 itertools.chain.from_iterable + zip

这是性能最优的方案之一,itertools 模块的函数由 C 语言实现,执行速度远快于纯 Python 循环:

import itertools

a = [1, 2, 3]
b = [4, 5, 6]
c = [7, 8, 9]

d = list(itertools.chain.from_iterable(zip(a, b, c)))

zip(a, b, c) 会把三个列表对应位置的元素打包成元组(比如 (1,4,7)、(2,5,8)),chain.from_iterable 会把这些元组逐个展开,最终生成目标列表。

方案2:使用嵌套列表推导式

如果不想引入额外模块,嵌套列表推导式也是高效选择,执行效率接近内置函数:

a = [1, 2, 3]
b = [4, 5, 6]
c = [7, 8, 9]

d = [x for trio in zip(a, b, c) for x in trio]

这个推导式先遍历 zip 生成的元组,再逐个取出元组内的元素,逻辑和你的代码一致,但因推导式内部做了优化,速度更快。

补充说明

以上两种方案和你的原代码一样,会以最短的列表长度为基准截断结果。如果需要处理长度不一致的列表并填充默认值,可以用 itertools.zip_longest 替代 zip,示例:

import itertools

d = list(itertools.chain.from_iterable(itertools.zip_longest(a, b, c, fillvalue=0)))

内容的提问来源于stack exchange,提问作者AnkS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 06:31:21