You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 23:31:13