【问题标题】:Python: Does any() stop iterating through list/generator once truthy value is found? [duplicate]Python:一旦找到真值,any() 是否会停止迭代列表/生成器? [复制]
【发布时间】:2020-10-05 12:15:24
【问题描述】:

如果你有:

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

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

如果它真的遍历整个列表,那么当然如果使用 for 循环并在找到后中断会更快,而不是使用 any(),这就是我要问的原因。

【问题讨论】:

    标签: python performance any


    【解决方案1】:

    是的,它确实像那样短路。来自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
    

    (即时)

    【讨论】:

    • 谢谢!现在我知道这被称为“短路”,很容易找到有关该主题的更多信息。不知道有这个名字。
    猜你喜欢
    • 1970-01-01
    • 2017-10-06
    • 2018-07-06
    • 1970-01-01
    • 1970-01-01
    • 2013-07-15
    • 2021-01-18
    • 2023-04-02
    • 2023-02-06
    相关资源
    最近更新 更多