我正在解决一个问题,但我很好奇如何更好地格式化我的输出。基本上,我正在使用一个数组,在Python中基本上是一个列表中的列表,或者我应该说嵌套列表。我正在处理的问题与电影评论的平均评分有关,但我们可以说第一列是一个编号为1-3或1-5的“评论者”(取决于数组的大小)和电影评论是行,同样这个大小取决于数组本身,3x3,6x6等。所以下面我将包括我的代码。
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 :(得分: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的评论。
答案 1 :(得分:0)
你可以使用更多的Pythonic结构:
test :: [Text]
test =["<Root xmlns:is=\"http://example.com\" xmlns:not=\"http://example.com/2\""
, "here = \"ok\""
, "is:here = \"ok\""
, "not:here=\"nok\">"
,"</Root>"]
输出正确的结果:
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)