2014-03-02 53 views
0

我想排隊一些數學表達式到python的地方,然後最後我想顯示他們的總結。排隊總結的東西,然後顯示它

我試圖做這樣的事情:

for i in range(0, n-1): sum_queue(pow(-1,i)/((2*i)+1)) 
print(sum(0)) #or sum("latest") 

這可能嗎?

+0

只是要清楚,隊列只持有一些數學表達式,對不對? – Alejandro

+0

'sum(「latest」)'是什麼?目前還不清楚詢問 –

回答

1
Python 2.7.5+ (default, Sep 19 2013, 13:48:49) 
>>> queue = [] 
>>> n = 10 
>>> for i in range(0, n-1): 
...  queue.append(pow(-1,i)/((2*i)+1)) 
... 
>>> queue 
[1, -1, 0, -1, 0, -1, 0, -1, 0] 
>>> sum(queue) 
-3 
>>> queue = [pow(-1,i)/((2*i)+1) for i in range(0, n-1)] 
>>> sum(queue) 
-3 
>>> 

如果您不需要的臨時列表,你可以使用一個發電機:

>>> sum(pow(-1,i)/((2*i)+1) for i in range(0, n-1)) 
-3 
+0

不能縮短嗎? –

+0

你可以有一個計數器而不是總結隊列。 – Alejandro

+0

@AlejandroLucena你可以發佈關於櫃檯的解決方案嗎? –

1

下面我來@ warwaruk的答案評論,這可以縮短使用計數器。雖然它破壞了使用隊列的目的,但由於這裏唯一的操作是對數值進行求和,隊列並不一定需要。

從技術上講,如果你要對所有的值進行任何類型的算術運算繼append()

n = 10; 
total = 0; 
for i in range(0,n-1): 
    total += (pow(-1,i)/((2*i)+1)); 
print(total); 

相反的附加價值的隊列,然後sum()就不再需要排隊它會在同一個循環內一起完成。

如果你想看看漸近分析,它們都是O(n),但是這個代碼更短,並且會爲你節省一個函數調用加上另一個O(n)操作。

希望這回答你的問題:)

相關問題