gpt4 book ai didi

python - 就效率/快速拒绝事物而言,您的 if 语句是否在同一行是否重要?

转载 作者:行者123 更新时间:2023-11-28 22:44:06 25 4
gpt4 key购买 nike

例如,假设我想找到 1 到 1000 之间的所有数字,这些数字可以被 3 和 5 整除。代码:

for i in range(1,1000):
if i % 3==0 and i %5 == 0:
blah

效率不如说

for i in range(1,1000):
if i%3==0:
if i%5==0:
blah

计算机是否同时检查这两个条件?例如,如果 i=10。第一个中的计算机会同时计算 i%3 和 i%5,还是会计算 i%3 然后中断?在那种情况下,将易于检查/拒绝的条件放在左侧会更有效,对吗?

最佳答案

在 python 和许多语言中有 short circuit evaluation的 bool 表达式。这意味着一旦我们确定 bool 表达式的真值,评估就会停止。在这方面,您的两个代码片段是等效的。

不过,您可以通过更改顺序进行优化。例如,最好使用:

if i % 5 == 0 and i % 3 == 0

原因是数字很少是 5 的倍数,因此在大多数情况下此表达式会更早失败。

例如,如果我们检查从 1 到 150 的数字,检查 i % 5 == 0 将对 120 个数字失败。所以我们要对 i % 5 == 0 执行 120 次检查,对 i % 5 == 0i % 3 == 0< 执行 30 次检查。总共有 180 张支票。同样,对于 if i % 3 == 0 and i % 5 == 0,我们将执行 100 + 2 * 50 = 200 检查。

关于python - 就效率/快速拒绝事物而言,您的 if 语句是否在同一行是否重要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29990459/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com