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

Python中如何按对应位置扩展list of lists?

解决两个列表的列表按位置扩展的问题

你的代码无效主要有两个原因:

  1. 循环变量x是list1里的子列表(比如[1,2,3]),不是索引,用子列表作为list1的索引会触发类型错误
  2. 你写的是生成器表达式,没有执行实际的extend操作;就算改成列表推导式,也只会生成一堆None(因为extend方法返回None)

下面给两种可行的解决方案:

方案一:修改原列表(原地扩展)

如果允许修改原list1,可以通过索引循环逐个扩展子列表:

list1 = [[1,2,3],[4,5,6],[7,8,9]]
list2 = [['a','b','c'],['d','e','f'],['g','h','i']]

# 遍历每个索引,扩展对应位置的子列表
for idx in range(len(list1)):
    list1[idx].extend(list2[idx])

print(list1)
# 输出:[[1,2,3,'a','b','c'],[4,5,6,'d','e','f'],[7,8,9,'g','h','i']]

注意:这个方法要求list1和list2的长度相同,否则会出现索引越界错误。

方案二:生成新列表(不修改原列表)

如果不想改动原列表,用列表推导式结合zip函数配对对应子列表,直接相加生成新列表:

list1 = [[1,2,3],[4,5,6],[7,8,9]]
list2 = [['a','b','c'],['d','e','f'],['g','h','i']]

output = [sub_list1 + sub_list2 for sub_list1, sub_list2 in zip(list1, list2)]

print(output)
# 输出:[[1,2,3,'a','b','c'],[4,5,6,'d','e','f'],[7,8,9,'g','h','i']]

zip(list1, list2)会把两个列表中位置对应的子列表配对成元组(比如([1,2,3], ['a','b','c'])),然后我们把每对的子列表相加,就得到了合并后的新子列表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 04:45:30