2015-10-12 117 views
1

我需要找到二維列表的總和,但我只能找到第一個列表的總和。有人可以指點我或引導我,我也看到人們使用計數器。我們不允許使用櫃檯。計算二維列表的總和

def avg(lst): 
i = 0 
A = 0 
for item in lst : 
    B = lst[i][A]+lst[i][A+1]+lst[i][A+2] 
i = i +1 
return B 

我有這樣的列表值

lsit = [[95, 92, 86], [66, 75, 54], [89, 72, 100], [34, 0, 0]] 

當我執行我只得到第一個列表的總和,但我需要得到整個列表的總和。

In [55]: avg(lsit) 
Out[55]: 273 
+0

在行i = i + 1中添加一些空格,所以它是for循環的一部分。另外B應該添加到自身(B = B + ...)。 – ergonaut

+0

'reduce(lambda x,y:x + sum(y),list,0)'是一個方便的一行代碼,可以完成這項工作,但是其他人指出問題出在你的縮進中。 – bkaf

回答

0

拉平列表,並使用總和

lsit = [[95, 92, 86], [66, 75, 54], [89, 72, 100], [34, 0, 0]] 
print(sum(x for sublist in lsit for x in sublist)) 

輸出

763 
1

我已經做了一些最小的改動你的代碼。使用內置sum和Gen-EXP按照意見

def avg(lst): 
    i = 0 
    A = 0 
    B = 0           # initialize 
    for item in lst : 
     B += lst[i][A]+lst[i][A+1]+lst[i][A+2]  # Use += 
     i = i +1         # Inside loop 
    return B 

另一種方法是

>>> lsit = [[95, 92, 86], [66, 75, 54], [89, 72, 100], [34, 0, 0]] 
>>> sum(sum(i) for i in lsit) 
763 

做,你正在使用avg注意要查找總和

0

你試圖獲得lsit中每個元素的總和?這樣做...

import numpy as np 
lsit = [[95, 92, 86], [66, 75, 54], [89, 72, 100], [34, 0, 0]] 
np.sum(lsit)