You need to enable JavaScript to run this app. Python函数返回列表至main时报NameError: New_List未定义问题求解
优惠活动
大模型
产品
解决方案
定价
更多

Python函数返回列表至main时报NameError: New_List未定义问题求解

报错根因

触发NameError: name "New_List" is not defined的核心是Python的变量作用域规则:New_List是定义在change_list函数内部的局部变量,仅能在change_list的函数块内被访问,外部的main函数完全无法直接读取这个变量。
你当前代码的两处编写问题:

  • 虽然change_list里写了return New_List的返回逻辑,但在main中调用函数时,没有用变量承接这个返回值
  • 直接在main的作用域里引用仅存在于change_list内部的New_List,自然会提示变量未定义
修正方法

按照你最初的需求——让FirstList经过change_list处理后,把得到的结果重新赋值回FirstList,只需要调整对应调用逻辑:

  • 把原来的change_list(FirstList)修改为FirstList = change_list(FirstList),用FirstList承接函数返回的处理结果
  • 删除main里错误的print(New_List)语句,改为打印已经完成重新赋值的FirstList

修正后的可运行代码:

from __future__ import print_function
import random
def main():
    FirstList = []
    print("Here is the list of random integers...")
    for x in range(0,12):
        FirstList.append(random.randint(50,100))
    for x in FirstList:
        print(x, end=" ")
    # 原循环内找元素的逻辑可简化,避免重复值带来的判断误差
    FourthElm = FirstList[3]
    NinthElm = FirstList[9]
    print(f"\nThe 4th Element in the list is {FourthElm}")
    print(f"The Element at index 9 is {NinthElm}")
    print(f"The smallest element in the list is {min(FirstList)}")
    # 承接函数返回值,完成FirstList的重新赋值
    FirstList = change_list(FirstList)
    print(FirstList)


def change_list(x):
    New_List = x[3:9]
    print(f"The size of the list is now {len(New_List)}")
    New_List = sorted(New_List)
    return New_List
    
main()

额外提示:你原本在循环里通过if x == FirstList[4]定位目标元素的写法有逻辑隐患——如果列表中存在和索引4位置值重复的元素,会错误触发变量赋值,直接通过索引取值的方式稳定性更高。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.23 02:15:04