Python列表全偶数判断函数异常:总是触发首个返回值问题求助
解决列表元素全为偶数的判断函数问题
嘿,我一眼就发现你代码里的问题啦!你不小心把列表的索引当成了列表元素来判断,这才导致函数总是提前返回不符合预期的结果。
问题出在哪里?
看你原来的代码:
def all_even(lst): for i in range(len(lst)): if i % 2 != 0: return False return True
这里的i是列表的索引值(从0开始递增的整数),你判断的是i % 2 != 0——也就是当索引为奇数的时候直接返回False,这和你要判断“列表元素是否全为偶数”的逻辑完全不搭边!比如列表[2,4,6],索引i会是0、1、2,当i=1时,1%2 !=0成立,函数就直接返回False了,这显然不是你想要的结果。
修正后的代码
直接遍历列表里的每个元素,检查元素是否为奇数:
def all_even(lst): for num in lst: if num % 2 != 0: return False return True
这个逻辑很清晰:逐个检查每个元素,如果发现任何一个奇数,立刻返回False;遍历完所有元素都没找到奇数,就返回True,完美符合你的需求。
更简洁的写法(Pythonic风格)
你还可以用Python内置的all()函数,一行代码搞定:
def all_even(lst): return all(num % 2 == 0 for num in lst)
all()函数会验证可迭代对象中的所有元素是否都为True,这里的生成器表达式num % 2 == 0 for num in lst会逐个判断元素是否为偶数,只要有一个元素不满足,all()就会返回False,否则返回True。
内容的提问来源于stack exchange,提问作者yagel
相关产品推荐
相关产品推荐

