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

Python中两列表(数组)相加返回None的原因及解决方法

Python列表对应元素相加返回None的问题排查与修复

第一段代码的问题

def add2NumberArrays(a,b):
    res = []
    for i in range(0,len(a)):
        return res.append(a[i] + b[i])


a = [4,4,7]
b = [2,1,2]

print(add2NumberArrays(a,b))
  • 两个核心错误:
    1. append()方法返回None:list.append()是原地修改列表的操作,它本身的返回值就是None,你直接把这个返回值作为函数结果返回,自然得到None。
    2. 循环一次就提前终止:第一次进入循环就执行return,函数直接结束,根本没机会处理列表里的其他元素。

第二段代码的问题

def add2NumberArrays(a,b):
    for i in range(0,len(a)):
        res = []
        ans = res.append(a[i]+b[i])
    return ans

a = [4,4,7]
b = [2,1,2]

print(add2NumberArrays(a,b))
  • 旧问题没解决,还新增了错误:
    1. 每次循环重置列表:res = []放在循环内部,每一轮循环都会把res重新置为空列表,最后循环结束时res里只会保留最后一个元素的相加结果。
    2. 依旧错误获取append的返回值:ans = res.append(...)还是拿到了None,最终返回的ans自然也是None。

正确写法

方法1:修复原有逻辑的常规循环

def add2NumberArrays(a,b):
    res = []
    for i in range(len(a)):
        res.append(a[i] + b[i])
    return res  # 循环遍历完所有元素后,再返回完整的结果列表

a = [4,4,7]
b = [2,1,2]

print(add2NumberArrays(a,b))  # 输出: [6,5,9]

方法2:用zip实现更简洁的写法

如果两个列表长度相同,用zip直接配对元素,代码更符合Python风格:

def add2NumberArrays(a,b):
    return [x + y for x, y in zip(a, b)]

a = [4,4,7]
b = [2,1,2]

print(add2NumberArrays(a,b))  # 输出: [6,5,9]

额外提示:处理长度不同的列表

如果两个列表长度不一致,可以补0对齐后再相加:

def add2NumberArrays(a,b):
    max_len = max(len(a), len(b))
    a += [0]*(max_len - len(a))
    b += [0]*(max_len - len(b))
    return [x + y for x, y in zip(a, b)]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 19:55:13