为什么这个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毫秒
答案 0 :(得分:1)
第一个版本:对于范围内的每个元素:将其分配给i
。
第二个版本:对于范围内的每个元素:将其分配给内部i
(左起第三个),评估表达式i
(i
从...(i for...
将结果分配给“外部”(最左侧)i
。
if
语句在两个版本中都可能产生类似的性能影响。