【发布时间】:2018-04-19 15:08:21
【问题描述】:
我正在创建一个绘图程序,它必须通过计算迭代值 10000-1000000 次,然后将该输出的一部分附加到列表中。为了更改它附加到哪个列表,该循环中有〜3个if语句。虽然首先使用 if 语句在逻辑上会更快,但是否节省了大量时间?
举个例子:
output = []
append_to = "pol"
for i in range(10000):
if append_to == "pol":
output.append(np.cos(i))
else:
output.append(np.sin(i))
这会明显慢于:
output = []
append_to = "pol"
if append_to == "pol":
for i in range(10000):
output.append(np.cos(i))
else:
for i in range(10000):
output.append(np.sin(i))
【问题讨论】:
-
不管哪个更快,记住它们并不完全等价(假设
append_to的值可能会改变,否则整个问题没有意义) -
append_to在整个循环过程中是否保持不变?在这种情况下,您可以定义f = np.cos if append_to == "pol" else np.sin,然后执行output = list(map(f, range(10000)) -
是的,append_to 在整个循环中保持不变,为什么这会使问题无效?我问的是优化。感谢您的建议,我将不得不研究地图功能。
标签: python python-3.x for-loop if-statement optimization