Python提取列表偶数的函数仅返回首个值就中断问题求解
问题原因
return语句执行后会直接终止当前函数的运行,你的代码在遍历到第一个偶数2时触发了return x,函数直接退出,自然不会处理列表后续的元素。- 代码中
else分支的continue属于冗余逻辑,即使不加这行代码,循环也会自动进入下一轮迭代。
解决方案
方案1:收集所有偶数后统一返回
先初始化空列表存储符合条件的偶数,遍历完全部元素后再返回整个列表,适合常规使用场景:
def list_num_checker(num_list): even_nums = [] for x in num_list: if x % 2 == 0: even_nums.append(x) return even_nums
调用示例输出为[2,4,6],完全符合预期。
方案2:生成器逐个返回(适合处理超大列表)
如果不需要一次性拿到全部偶数,希望逐个获取结果减少内存占用,可以把return替换为yield定义生成器函数:
def list_num_checker(num_list): for x in num_list: if x % 2 == 0: yield x
调用时可以遍历生成器输出,也可以直接转成列表使用:
# 逐个输出结果 for num in list_num_checker([1,2,3,4,5,6]): print(num) # 转为列表存储所有结果 result = list(list_num_checker([1,2,3,4,5,6]))
内容的提问来源于stack exchange,提问作者wes BOREland
相关产品推荐
相关产品推荐

