2013-08-02 103 views
0

說我有號碼的列表,如:的Python for()循環與數學運算符

my_list = [1, 17, 2]

,我想補充的一起。我知道我可以使用print(sum(my_list))。不過,我想看看是否有這樣做的另一種方式,所以我嘗試了以下內容:

b = len(my_list) 
for m in range(my_list[0], my_list[b-1]): 
    m += m 
    print(m) 

我相信這樣的事情應該工作,但我明明做錯了。這個輸出是2。我試過之後:

result = 0 
b = len(my_list) 
for m in range(my_list[0], my_list[b-1]): 
    result = result + m 
    print(result) 

這個輸出1

請解釋我做錯了什麼以及如何糾正它。

回答

2

首先,你應該把一個正確的範圍:0..2你的情況(因爲列表項指標從0開始,有2項)

for i in range(0, b): 
     result = result + my_list[i]; 

或者如果你喜歡‘每個’風格,你應列表itterate你正在總結:

for m in my_list: 
     result = result + m; 

最後,如果你想打印一個最終的總和只有你應該正確的打印縮進:

for m in my_list: 
     result = result + m; 

    print(result) # <- mind indent 

結束語:

my_list = [1, 17, 2] 

    result = 0 

    for m in my_list: 
     result = result + m; 

    print(result) 
+0

謝謝你的多個例子,這有助於很多。 – mccdlibby

2

由於使用1和2在米中產生的唯一的數據之間限定範圍範圍函數是1,因此結果爲1

在Python,則可以在一個直接序列的元素迭代:

m = [1, 17, 2] 
res = 0 
for i in m: 
    res += i 
print res 
+0

哇,這真是棒極了,謝謝你。 =] – mccdlibby

+0

感謝您使用文本來解釋您的答案。 – SethMMorton

0
import functools 

print(functools.reduce(lambda x,y: x+y, my_list)) 
+0

我很欣賞這種迴應,我會注意到這一點以備將來參考。我還沒有去functools,但謝謝你。 – mccdlibby

+0

如果您熟悉python 2.x中的reduce,它在python 3.x中是一樣的,但它們將它包裝在functools模塊 – Z3r0n3

+0

中我已經編程了大約一週。我學到了很多東西,在各處掙扎,但迄今爲止已經克服了所有障礙。希望我能繼續這樣。太有趣了! – mccdlibby

0

試試這個

my_list = [1, 17, 2] 
reduce(lambda x, y: x+y, my_list) 
2
from operator import add 

my_list = [1, 17, 2] 
result=reduce(add, my_list) 
0

擺脫my_list你可以使用這個語法的值:

for m in my_list: 
    print m 

如果使用範圍,它會給你一個範圍從1(列表的第一個值)爲2(長度您的列表-1)

要添加值列表,你可以試試這個代碼:

out = 0 
for m in my_list: 
    out = out + m 
print(out)