Python:一旦找到真实值,any()是否停止遍历列表/生成器?

时间:2020-06-16 00:33:20

标签: python performance any

如果有:

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

并且sentences是一长串,例如10,000个句子长度的字符串,any()将遍历整个列表以确定是否为真,或者一旦找到真值,它将停止寻找找到了,因为any()的值已经确定为真?

如果无论如何真正遍历整个列表,那么当然,使用一次for循环并一旦发现中断就比使用any()更快,这就是我要问的原因。

1 个答案:

答案 0 :(得分:2)

是的,它确实会发生短路。来自the documentation

等同于:

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

(即时)