2013-06-05 122 views
0

我想查找Python中二維列表的平均值。僅添加單行並查找單行平均值的2d列表平均值

這是我的列表的例子:

list = [[x, y, 1], [x, y, 1], [x, y, 2]] 

我想添加第三排,發現只有該行的平均水平。

這是我的代碼:

def averageList(list): 
    averagefile = [] 
    sum = 0 
    for count in range(0, len(list)): 
     try: 
      sum = sum + float(list[count][2]) 
     except ValueError: 
      print '' 
    average = sum/len(list[count]) 
    averagefile.append(average) 
    print averagefile 

    #return averageList 

回答

4
>>> L = [['x','y',1], ['x','y',1], ['x','y',2]] 
>>> sum(entry[-1] for entry in L)/float(len(L)) 
1.3333333333333333 

這是一樣的:

>>> sum(entry[2] for entry in L)/float(len(L)) 

自上次位置是指數2

+0

使該條目[2]代替條目[-1]只是模仿原代碼。 – matiasg

+0

我不知道你可以使用像Python那樣的負向列表索引。很酷! – Haz

0

下面是一個使用地圖的替代:

>>> li=[['x','y',1], ['x','y',1], ['x','y',2]] 
>>> sum(map(lambda sl: sl[2],li))/float(len(li)) 
1.3333333333333333 

也可以使用ZIP:

>>> sum(zip(*li)[2])/float(len(li) 
1.3333333333333333