2013-04-23 74 views
-2

这里是我的代码为什么在python范围内(0,x ** 2 + 1)非常慢?

def(x): 
    for i in range (0,x**2+1): 
     ... 

但我发现它是非常慢! 谁能告诉我理由,谢谢!

+3

什么是你的“非常慢”的定义?这也绝对不是有效的代码。我想象缓慢的真正原因是在你的实际代码中的其他地方,而不是'x ** 2'。 – 2013-04-23 13:54:11

+5

不是,而是提高'SyntaxError'非常快。你的完整代码是什么? – Volatility 2013-04-23 13:54:29

+1

'x'的价值是什么? – 2013-04-23 13:55:18

回答

8

在Python 2.x的:range创建所有号码列表直到停止参数(这看起来是在你的情况庞大)。

您可以尝试使用xrange代替它创建一个迭代器,而不是一个列表。

+0

对方回答将是'X ** 2'比'慢X * x'因为后者是一个简单的乘法,而前者是一个可变的指数更复杂的操作。 – poke 2013-04-23 13:57:02

+0

非常感谢! – 2013-04-23 13:59:54

+1

@poke - 好吧,那不是OP可以注意到的时差。 – eumiro 2013-04-23 14:09:25

相关问题