2015-12-15 123 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