当尝试测量一段代码的执行时间以计算列表中的最小值时(不使用内置方法),我得到两个不同代码的时间不同。
代码1:
%%timeit
minimum = None
for x in num:
if minimum == None:
minimum=x
elif x<minimum:
minimum=x
else:
continue
1.47 µs ± 186 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
代码2:
%%timeit
minimum = num[0]
for x in num:
if x<minimum:
minimum=x
else:
continue
897 ns ± 65.3 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
为什么这两段代码之间存在如此大的差异?几乎没有任何区别。是因为我使用了第二个代码中特定列表位置的数据吗?
答案 0 :(得分:4)
Code 1
中还有一个额外的检查-仅在第一次迭代中有用,但是您会继续检查每个迭代。由于代码很少,因此会使程序运行速度降低近2倍。
顺便说一句,else: continue
什么都不做-Python自然会在循环的底部继续。
嗯...也许您没有注意到时间单位的差异?测量值是1470 ns和897 ns。