Python 3 - 帮助格式化数组/表输出

标签 python arrays python-3.x

我正在解决一个问题,但我很好奇如何更好地格式化我的输出。基本上,我正在使用一个数组,在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

最佳答案

你没有正确地计算平均值,所以我也冒昧地解决了这个问题。现在,根据您的问题:使用 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 评论。

关于Python 3 - 帮助格式化数组/表输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34279081/

相关文章:

python - 数组的 Numpy 矩阵没有复制可能吗?

python - 从 Pandas 数据框的列创建一个 numpy 数组

python - Django 1.4 和 NoReverseMatch 在/admin/error

c - C语言删除数组重复元素的程序

python - 如何使用 FastAPI 下载大文件?

arrays - 如何更好地使用repeat while循环进行索引和数组

java - 简单 ViewPager - 单一布局

python - 我如何给变量自定义元数据?

python-3.x - ImportError : cannnot import name 'Imputer' from 'sklearn.preprocessing'

python - 表达式的字典列表