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

Python两列表相加函数运行报错:NameError: name 'R' is not defined

解决Python列表相加代码中的NameError问题

错误原因

你代码里的R是add_lists函数内部的局部变量,仅在函数作用域内有效。调用add_lists(L1, L2)时虽然函数返回了R,但你没有将这个返回值保存到外部变量中,直接在print语句里引用R就会触发NameError——因为外部根本不存在这个变量。

修正方案

有两种简单的修正方式:

方式1:将函数返回值赋值给变量

把函数调用的结果存到一个变量(比如R)里,再在print中使用:

def add_lists(L1, L2):
    R = []
    for i in range(0, len(L1)):
        R.append(L1[i]+L2[i])
    return R

L2 = [3, 3, 3, 3]
L1 = [1, 2, 3, 4]
R = add_lists(L1, L2)  # 接收函数返回值
print("Resultant list of: ", str(L1), '& ' + str(L2), 'is', R)

方式2:直接在print中调用函数

不需要额外变量,直接把函数调用作为参数传入print:

def add_lists(L1, L2):
    R = []
    for i in range(0, len(L1)):
        R.append(L1[i]+L2[i])
    return R

L2 = [3, 3, 3, 3]
L1 = [1, 2, 3, 4]
print("Resultant list of: ", str(L1), '& ' + str(L2), 'is', add_lists(L1, L2))

额外优化建议

如果两个列表长度不一致,当前代码会报错。可以改成兼容不同长度的版本:

def add_lists(L1, L2):
    R = []
    # 遍历到两个列表中较长的那个的长度
    for i in range(max(len(L1), len(L2))):
        # 超出长度的列表元素用0补全
        val1 = L1[i] if i < len(L1) else 0
        val2 = L2[i] if i < len(L2) else 0
        R.append(val1 + val2)
    return R

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 19:18:18