如何在python中获取二维列表中一行的平均值?

新手上路,请多包涵

我是 Python 的新手,我正在使用 2D 列表,但不确定如何获取行的平均值。

例如我有这个列表:

 myList = [[70, 80, 90], [30, 40, 50]]

我想得到第一行和第二行的平均值。

是这样的:

(70 + 80 + 90)/3 = 80

(30 + 40 + 50)/3 = 40

我正在实现我的 print_student_average 功能,但我有点迷路了。请有人告诉我我做错了什么。

这是我的代码:

 def main():
    myList = [[70, 80, 90], [30, 40, 50]]

    print(print_student_average(myList))
    print_exam_average(myList)

def print_student_average(myList):

    total_sum = [sum(i) for i in range(len(myList))]
    average = total_sum/3

    return average

def print_exam_average(myList):

    col_totals = [ sum(x)/2 for x in zip(*myList) ]

    for col in col_totals:
        print("the average of the exam is: ", col)

main()

原文由 Devmix 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 691
2 个回答

这应该做你想做的。希望能帮助到你!

 def main():
    myList = [[70, 80, 90], [30, 40, 50]]

    print(print_student_average(myList))
    print_exam_average(myList)

def print_student_average(myList):

    return [sum(row)/len(row) for row in myList]

def print_exam_average(myList):

    col_totals = [ sum(x)/len(myList) for x in zip(*myList) ]

for col in col_totals:
    print("the average of the exam is: ", col)

main()

原文由 HenryDev 发布,翻译遵循 CC BY-SA 3.0 许可协议

如果需要,可以使用 numpy 包及其函数 mean

要计算每个学生的平均分数,给定 myList ,代码如下所示:

 import numpy

def print_student_average(myList):
    students_avg = numpy.mean(myList, axis=1)
    for avg in students_avg:
        print(avg)
    return students_avg

请注意, axis=1 确定平均值是根据行计算的。使用提供的示例中的列表,输出为:

 80.0
40.0

同样,您可以使用相同的 numpy 函数获得每次考试的平均值:

 def print_exams_average(myList):
    exams_avg = numpy.mean(myList, axis=0)
    for avg in exams_avg:
        print(avg)
    return exams_avg

在这种情况下 axis=0 获取列的平均值,示例中提供的列表的结果是:

 50.0
60.0
70.0

关于您 print_student_average 中的问题,

  total_sum = [sum(i) for i in range(len(myList))]

是主要问题。 range 返回从 0 到列表长度的整数列表,在示例中为 2。使用 for 语句迭代列表的每个值 range ,然后您尝试对整数使用 sum ,这不起作用,因为它不是列表。另一个答案中已经提供了更紧密地遵循您的代码的解决方案。

原文由 albertoql 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题