Python嵌套列表子列表元素平均值计算报错求助
解决嵌套列表中每个子列表的元素平均值计算问题
错误原因
你代码里的marks_in_C = i[1][2]取出的是单个整数(比如Shiloh的C科成绩45),而sum()函数需要传入可迭代对象(比如列表),直接对整数调用sum()就会触发"integer object is not iterable"错误。你的需求是计算每个学生所有成绩的平均值,所以应该取整个成绩子列表,而非单个成绩。
正确实现方式
基础写法(手动求和)
遍历从第二个元素开始的列表(跳过表头),对每个学生的成绩列表直接求和并除以长度:
student_marks = [ ['Name', ['A', 'B', 'C', 'D', 'E']], ['Shiloh', [41, 34, 45, 55, 63]], ['Shawn', [42, 23, 34, 42, 53]], ['Lewis', [32, 23, 23, 54, 67]], ['Pete', [23, 82, 23, 63, 34]], ['Rock', [21, 23, 25, 56, 56]] ] for student in student_marks[1:]: name = student[0] marks = student[1] average = sum(marks) / len(marks) print(f"{name} 的平均成绩: {average:.2f}")
更简洁的写法(使用statistics.mean)
Python的statistics模块提供了mean()函数,可以直接计算列表的平均值,避免手动计算:
import statistics for student in student_marks[1:]: name = student[0] marks = student[1] average = statistics.mean(marks) print(f"{name} 的平均成绩: {average:.2f}")
额外说明
如果你实际是想计算某一科(比如C科)所有学生的平均值,可以这样写:
# 提取所有学生的C科成绩(索引为2) c_marks = [student[1][2] for student in student_marks[1:]] c_average = sum(c_marks) / len(c_marks) print(f"C科的整体平均成绩: {c_average:.2f}")
内容的提问来源于stack exchange,提问作者adewole
相关产品推荐
相关产品推荐

