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

如何修改Python代码实现任意长度列表的对应元素逐位相加

问题原因

你现有代码的逻辑仅适配lst1长度大于等于lst2的场景:当lst2长度超过lst1时,循环变量i会超出lst1的索引范围,触发IndexError索引越界报错。

修改方案

你可以取两个列表的最小长度作为循环的上限,从根源避免索引越界,再根据你的业务需求选择是否保留超出共同长度的元素:

方案1:对应位相加,保留长列表超出部分的元素

和你原有测试用例逻辑一致:短列表和长列表对应位相加,长列表多出来的元素直接保留在结果末尾,同时避免修改输入的原始列表:

def elem_sum(lst1, lst2):
    # 复制lst1生成结果列表,避免修改传入的原始列表
    res = lst1.copy()
    min_length = min(len(res), len(lst2))
    # 仅循环到两个列表的最小长度,不会越界
    for i in range(min_length):
        res[i] += lst2[i]
    # 如果lst2更长,把超出的部分追加到结果末尾
    if len(lst2) > len(res):
        res.extend(lst2[min_length:])
    return res

测试效果:

  • 输入elem_sum([1, 2, 3], [10, 20]) 输出 [11, 22, 3]
  • 输入elem_sum([1, 2, 3], [10, 20, 30, 40]) 输出 [11, 22, 33, 40]

方案2:仅返回共同长度的相加结果

如果不需要保留超出共同长度的元素,直接取对应位相加的结果即可:

def elem_sum(lst1, lst2):
    res = []
    min_length = min(len(lst1), len(lst2))
    for i in range(min_length):
        res.append(lst1[i] + lst2[i])
    return res

测试效果:

  • 输入elem_sum([1, 2, 3], [10, 20]) 输出 [11, 22]
  • 输入elem_sum([1, 2, 3], [10, 20, 30, 40]) 输出 [11, 22, 33]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 20:15:06