Python筛选数组中大于指定值元素输出异常问题求助
问题解决
你的代码出现异常输出的核心原因是函数调用语句写在了函数定义之前。Python是解释型语言,代码从上到下逐行执行,当执行filter_list(list, n)时,filter_list函数还未被定义,理论上会直接抛出NameError。你能看到6、7的输出,大概率是运行环境中存在之前定义的同名函数残留,导致部分执行。
修正后的代码
def filter_list(lst, n): # 直接遍历列表元素,比索引遍历更简洁 for num in lst: if num > n: print(num) # 避免用list作为变量名,它是Python内置类型 lst = [2, 3, 4, 5, 6, 7, 8, 9] n = 5 filter_list(lst, n)
说明
- 调整代码顺序:将函数定义移至调用语句之前,确保解释器能识别函数
- 优化遍历方式:直接遍历列表元素,无需通过
range(len(list))取索引,代码更易读 - 规范变量名:替换
list为lst,避免覆盖Python内置的list类型
运行修正后的代码,会正确输出6、7、8、9。
内容的提问来源于stack exchange,提问作者user1234Es
相关产品推荐
相关产品推荐

