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

有序列表匹配校验:批量学生答题与标准答案比对需求

批量比对学生作答与标准答案生成匹配结果列表

需求说明

给定存储学生作答的二维有序列表(每个子列表对应一名学生的全题作答),以及与子列表长度一致的标准答案列表,按位置逐一比对对应题目的答案,生成由1(匹配)和0(不匹配)组成的二维结果列表,用于后续正确率计算。

示例

# 学生作答列表
student_answers = [['A', 'B', 'C', 'A'], ['A', 'C', 'C', 'B']]
# 标准答案列表
standard_answers = ['A', 'B', 'C', 'A']
# 预期结果
expected_result = [[1, 1, 1, 1], [1, 0, 1, 0]]

实现方案

使用Python的嵌套列表推导式可以简洁高效地完成需求,同时可选添加数据合法性检查避免长度不匹配的错误:

基础实现

student_answers = [['A', 'B', 'C', 'A'], ['A', 'C', 'C', 'B']]
standard_answers = ['A', 'B', 'C', 'A']

# 生成匹配结果
result = [[1 if ans == std else 0 for ans, std in zip(student, standard_answers)] 
          for student in student_answers]

print(result)
# 输出: [[1, 1, 1, 1], [1, 0, 1, 0]]

带合法性检查的健壮实现

如果需要确保所有学生的作答长度与标准答案一致,可添加前置检查:

student_answers = [['A', 'B', 'C', 'A'], ['A', 'C', 'C', 'B']]
standard_answers = ['A', 'B', 'C', 'A']

# 检查作答长度是否匹配
for student_idx, answers in enumerate(student_answers):
    if len(answers) != len(standard_answers):
        raise ValueError(f"第{student_idx + 1}名学生的作答数量与标准答案不一致,请核对数据")

# 生成结果
result = [[1 if ans == std else 0 for ans, std in zip(student, standard_answers)] 
          for student in student_answers]

代码说明

  • 外层列表推导式遍历每一名学生的作答列表
  • 内层列表推导式通过zip()将学生的每道题答案与标准答案按位置配对,比对后输出1或0
  • 合法性检查可提前发现数据异常,避免后续比对出现错位问题

内容的提问来源于stack exchange,提问作者Francisco Mello Castro

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 15:10:22