2015-12-15 60 views
2

我正在處理一個問題,但我很好奇如何更好地格式化我的輸出。基本上,我正在處理一個數組,它在Python中基本上是列表中的一個列表,或者我應該說嵌套列表。我正在處理的問題與電影評論的平均評分有關,但我們只需說第一列是編號爲1-3或1-5(取決於數組大小)和電影評論的「評論者」是行,這也是大小取決於數組本身,3x3,6x6等,所以下面我將包括我的代碼。Python 3 - 幫助格式化數組/表格輸出

array = [[4,6,2,5], [7,9,4,8], [6,9,3,7]] 

def review(array): 
    'function that outputs average review of movie scores' 

    ncols = len(array[0]) #finds number of columns in array 
    total = 0 

    for row in array: 
     for el in row: 
      total+= el 
      avg = total/ncols 
      print(end = ' ') 
     print(' Reviewer average:', avg) 

現在,這樣做精至於計​​算去上班,但我需要做的是有「審閱平均」數1,2,3,或基於1,2,3,4,5關閉數組中的列數量,換句話說,它應該根據數組大小輸出列號。因此,例如,如上面我的代碼原有的數組一個3x3的陣列輸出應該是這樣的:

Reviewer 1 average: 4.25 
Reviewer 2 average: 11.25 
Reviewer 3 average: 17.5 

然而,正如我說我的問題是,我似乎無法弄清楚如何號碼它與任何表/數組的大小工作,我想無論是工作,如果它的6x6 3x3的或等

我的電流輸出是這樣的:

Reviewer average: 4.25 
Reviewer average: 11.25 
Reviewer average: 17.5 
+0

你確定你的平均值是正確的? – erip

+0

除了不重置總數外,您似乎也在混淆行和列。 'ncols'和'array in array'都指'array'中的第一個數組。 – Junuxx

回答

2

你是不是正確的取平均值,所以我冒昧解決了這個問題。現在,按您的問題:使用enumerate,就像這樣:

array = [[4,6,2,5], [7,9,4,8], [6,9,3,7]] 

def review(array): 
    'function that outputs average review of movie scores' 

    for i, row in enumerate(array, 1): 
     avg = sum(row)/len(row) 
     print(' Reviewer {0} average: {1}'.format(i, avg)) 

輸出:

Reviewer 1 average: 4.25 
Reviewer 2 average: 7.0 
Reviewer 3 average: 6.25 

編輯:更新的代碼下面結合erip的評論。

+0

你可以使用'枚舉(數組,1)',那麼你不需要'我+ 1' – erip

+0

謝謝,是否有任何其他方式來做到這一點,而不枚舉?我只是想好好學習所有可能的方法,如果它們存在的話。 – Jabgan

+0

@Jabgan有許多方法,但'enumerate'是最pythonic。 – erip

0

你可以使用一些更Python結構:

array = [[4,6,2,5], [7,9,4,8], [6,9,3,7]] 
# Reviewer 1's average: (4+6+2+5)/4 = 4.25 
# Reviewer 2's average: (7+9+4+8)/4 = 7 
# Reviewer 3's average: (6+9+3+7)/4 = 6.25  

def review(array): 
    'function that outputs average review of movie scores' 

    for i, row in enumerate(array,1): 
     average = sum(row)/float(len(row)) 
     print('Reviewer {} average: {}'.format(i, average)) 

review(array) 

其輸出正確的結果:

20:01 $ python test.py 
Reviewer 1 average: 4.25 
Reviewer 2 average: 7.0 
Reviewer 3 average: 6.25