首页 > 解决方案 > Python:一旦找到真值,any() 是否会停止迭代列表/生成器?

问题描述

如果你有:

if any(word in sentence for sentence in sentences):

并且sentences是一个长列表,比如说 10,000 个句子长度的字符串,将any()遍历整个列表以确定是否有任何为真,或者一旦找到真值,它就会停止查找,因为该any()值已被确定为真?

如果它真的遍历整个列表,那么当然如果使用 for 循环和 break 一旦找到会更快,而不是使用any(),这就是我问的原因。

标签: pythonperformanceany

解决方案


是的,它确实像那样短路。从文档中

相当于:

def any(iterable):
    for element in iterable:
        if element:
            return True
    return False

一种简单的确认方法是使用大的或无限的可迭代:

>>> any(True for i in range(1_000_000_000_000))
True

(立即的)


推荐阅读