为什么简单的for循环使用if条件比python中的条件生成器表达式更快

时间:2017-09-14 01:37:29

标签: python performance time-complexity

为什么这个for循环使用if条件在第一种情况下比使用条件生成器表达式的第二种情况快2倍?

%%timeit
for i in range(100000):
    if i < 10000:
        continue
    pass

以100个循环计时,每个循环最佳3:2.85 ms,同时使用生成器表达式:

%%timeit
for i in (i for i in range(100000) if i >= 10000):
    pass

100个循环,最佳3:每循环6.03毫秒

1 个答案:

答案 0 :(得分:1)

第一个版本:对于范围内的每个元素:将其分配给i

第二个版本:对于范围内的每个元素:将其分配给内部i(左起第三个),评估表达式ii...(i for...将结果分配给“外部”(最左侧)i

if语句在两个版本中都可能产生类似的性能影响。