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

Python如何按对应位置合并两个嵌套列表生成指定结构新列表

Python两个等长列表按对应位置子列表合并实现

原代码错误说明

你写的循环存在两个核心问题:

  • for i, j in a, b的遍历逻辑不成立,该写法只会先后遍历a、b两个列表整体,不会对两个列表的对应位置元素做配对
  • 循环中拿到的i、j是列表里的子元素(比如['bmw']、[12,2]),不是整数索引,无法作为下标调用a[i]、b[j]取值,运行必然报错。

推荐实现方式

方法1:列表推导式+zip(最简洁,生成新列表不修改原数据)

利用zip可以同时遍历多个可迭代对象、自动按位置配对元素的特性,直接拼接对应位置的两个子列表即可:

a = [['bmw'], ['audi'], ['benz'], ['honda']]
b = [[12,2], [3,4], [7,5], [6,23]]
n = [sub_a + sub_b for sub_a, sub_b in zip(a, b)]

运行后n的输出完全匹配你的预期:

[['bmw', 12, 2], ['audi', 3, 4], ['benz', 7, 5], ['honda', 6, 23]]

该方法不会修改原始列表a、b的内容,适合后续还需要使用原始列表的场景。

方法2:索引遍历(直接修改原列表a)

如果你不需要保留原始a的内容,想直接在a的基础上合并,可以通过索引遍历,用extend批量追加对应元素:

for idx in range(len(a)):
    a[idx].extend(b[idx])

执行完成后a本身就会变成目标结构的列表。

方法3:逐元素追加(和你最初的append思路最接近)

如果要明确使用append逐元素添加,注意先配对元素,同时避免修改原列表:

n = []
for sub_a, sub_b in zip(a, b):
    current = sub_a.copy()
    for val in sub_b:
        current.append(val)
    n.append(current)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 14:36:23