python - Python的reduce()会短路吗?

标签 python

如果我这样做:

result = reduce(operator.and_, [False] * 1000)

它会在第一个结果后停止吗? (因为 False & anything == False)

类似地:

result = reduce(operator.or_, [True] * 1000)

最佳答案

事实并非如此。在这种情况下,您的替代方案是 anyall .

result = reduce(operator.and_, [False] * 1000)
result = reduce(operator.or_, [True] * 1000)

可以替换为

result = all([False] * 1000)
result = any([True] * 1000)

短路。

计时结果显示差异:

In [1]: import operator

In [2]: timeit result = reduce(operator.and_, [False] * 1000)
10000 loops, best of 3: 113 us per loop

In [3]: timeit result = all([False] * 1000)
100000 loops, best of 3: 5.59 us per loop

In [4]: timeit result = reduce(operator.or_, [True] * 1000)
10000 loops, best of 3: 113 us per loop

In [5]: timeit result = any([True] * 1000)
100000 loops, best of 3: 5.49 us per loop

关于python - Python的reduce()会短路吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3570624/

相关文章:

python - 将应用程序创建的文件拖放到资源管理器窗口

python - 在 Ubuntu 系统中无法打开 Jupyter Notebook

python - 在 Python 3 中检查文件列表中的字符串

Python:所有可能的字母组合

python - 如何从 python 生成 reST/sphinx 源?

python - 带计数的外键引用

python - 从文件中读取的 CSV 分隔符

python - 使用 pandas 更改列数据类型

python - Pandas:检查另一列中是否存在子字符串,然后创建一个具有特定值的新列

java - 获取每个 Mapper 或 Spark MapReduce 模型中全局的每个键的计数