如何用Python函数对嵌套列表每个子列表求和计算学生总分
问题原因
你原有函数的错误在于:results_sheet是嵌套列表结构,遍历得到的每个元素是单个学生的20道题得分列表,无法直接和整数类型的累加变量相加,同时你没有为每个学生单独计算总分并存储为列表结构,自然无法得到预期的总分列表输出。
正确实现代码
版本1:常规循环写法(易理解)
def sum_score(results_sheet): total_scores = [] # 遍历每个学生的得分列表 for student_scores in results_sheet: # 调用sum函数计算单个学生的所有题目总分 total_scores.append(sum(student_scores)) return total_scores
版本2:列表推导式写法(简洁高效)
def sum_score(results_sheet): return [sum(scores) for scores in results_sheet]
调用示例
# 生成成绩表的代码记得先导入random模块 import random results_sheet = [] num_of_questions = 20 num_students = 50 for student in range(num_students): scores = random.choices(list(range(0,6)),k=num_of_questions) results_sheet.append(scores) # 调用函数得到总分列表 total_scores = sum_score(results_sheet) # 打印前2名学生的总分 print(total_scores[:2])
运行后即可得到你预期的类似[47, 55]的输出结果。
内容的提问来源于stack exchange,提问作者CTan
相关产品推荐
相关产品推荐

