为什么在python范围(0,x**2+;1)中速度非常慢?
这是我的密码为什么在python范围(0,x**2+;1)中速度非常慢?,python,Python,这是我的密码 def(x): for i in range (0,x**2+1): ... 但是我发现它非常慢!! 谁能告诉我原因,谢谢 在Python2.x中:range创建一个到stop参数的所有数字的列表(在您的例子中,它看起来很大) 您可以尝试使用xrange来创建迭代器而不是列表。您对“非常慢”的定义是什么?这也是绝对无效的代码。我想慢的真正原因是在实际代码的其他地方,而不是x**2。不。相反,它能很快地引发语法错误。你的完整代码是什么?x的值是多少?另一个答
def(x):
for i in range (0,x**2+1):
...
但是我发现它非常慢!!
谁能告诉我原因,谢谢 在Python2.x中:
range
创建一个到stop参数的所有数字的列表(在您的例子中,它看起来很大)
您可以尝试使用
xrange
来创建迭代器而不是列表。您对“非常慢”的定义是什么?这也是绝对无效的代码。我想慢的真正原因是在实际代码的其他地方,而不是x**2
。不。相反,它能很快地引发语法错误。你的完整代码是什么?x
的值是多少?另一个答案是x**2
比x*x
慢,因为后者是一个简单的乘法,而前者是一个具有可变指数的更复杂的运算。@poke-嗯,这不是OP可能注意到的时差。@poke:我发现x**2
实际上比x*x
稍快,可能(我在这里猜测)是因为LOAD\u CONST
比LOAD\u GLOBAL
快。(更新:而且x**2.0
速度较慢,因此必须对类型进行专门化,对整型参数进行通常的巧妙处理。)在这个级别上,您通常测量Python实现开销。@DSMx*x
速度要快得多。(在我的测试中,x**2.0
实际上比x**2
o.o)快得多@poke:我不同意x*x
快得多,至少对于整数参数来说是这样(浮动的情况不同)。我得到80纳秒的x**2
和90纳秒的x*x
。