为什么函数不检查到最后一个数字?

Gem*_*Gem -2 python loops for-loop

def evenchecker(lst):
    for number in lst:
        return number%2==0
    else:
        pass
Run Code Online (Sandbox Code Playgroud)

我正在尝试创建一个函数来检查列表中的偶数或任何可迭代的项目。当我将第一个数字保持为偶数时,它可以工作,但是当我将第一个数字保持为奇数时,它会分崩离析,它只会返回 false 并且不会为进一步的偶数报告 true。

有人可以解释一下为什么会发生这种情况吗,我是编程和学习 Udemy 课程的绝对初学者。我确实找到了解决方法,

def evenchecker(lst):
    for number in lst:
        if number%2==0:
            return "The list has an even number"
    else:
        pass
Run Code Online (Sandbox Code Playgroud)

这会检查到最后一个数字。

Tim*_*rts 5

您的第一个循环立即返回。它不会查看列表的任何其他部分。你的第二个例子做得很好。这

    else:
        pass
Run Code Online (Sandbox Code Playgroud)

零件绝对没用。删除它们。

请注意,您可以在一行中执行该操作:

def evenchecker(lst):
    return any(k % 2 == 0 for k in lst)
Run Code Online (Sandbox Code Playgroud)

  • 使用“True”而不是“1”可能更直观,即使 bool(value) 为“True”的任何值都足够了。 (2认同)
  • 也许这是个人喜好。但在我看来,如果你的意思是“True”,那么就使用“True”。 (2认同)
  • @holdenweb 对于“直观”,我会选择 `any(k % 2 == 0 for k in lst)`,我认为这是通常的风格。虽然速度比较慢。 (2认同)