为什么在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实现开销。@DSM
x*x
速度要快得多。(在我的测试中,
x**2.0
实际上比
x**2
o.o)快得多@poke:我不同意
x*x
快得多,至少对于整数参数来说是这样(浮动的情况不同)。我得到80纳秒的
x**2
和90纳秒的
x*x