我意识到 Python 不是性能最高的语言,但由于这看起来很容易,我想知道如果我有嵌套循环,是否值得将范围赋值移到 for 循环之外。例如:
for i in range(1000):
for j in range(1000):
foo()
对比
r = range(1000)
for i in range(1000):
for j in r:
foo()
第二个会运行得更快,还是 Python 解释器会优化第一个示例中的重复函数调用?另外,如果我使用 xrange,答案会改变吗? (或 Python 3 范围)。谢谢!
最佳答案
让我们看看:
@timeit
def a():
x = 0
for i in range(10000):
for j in range(10000):
x+=1
return x
@timeit
def b():
x = 0
r = range(10000)
for i in range(10000):
for j in r:
x+=1
return x
a()
b()
'a' ((), {}) 3.30 sec
'b' ((), {}) 2.64 sec
是的,第二个看起来更快。
关于python - 我应该在 Python 的循环之外分配一个范围吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31257692/