2013-04-23 60 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

相關問題