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

学生成绩平均分匹配问题求助:重复平均分对应错误学生姓名

解决重复平均分的匹配错误问题

嘿,这个坑我之前踩过!问题根源就在你用的average.index(i)——这个方法只会返回第一个和i匹配的元素索引,所以当第二个6.0出现时,它还是指向了Jesse Lawrence的那条数据,而不是Philip Sanchez的。

正确的解法思路

我们需要让学生信息和对应的平均分一一绑定,而不是通过值去反向查找索引。这里有两种简单靠谱的方式:

方法1:用zip同时遍历学生信息和平均分

zip()函数会把两个列表里的对应元素打包成元组,这样就能保证每个学生和自己的平均分精准配对:

info = [['Frank Morgan', '7.89', '3.19', '6.90', '9.90'], ['Jesse Lawrence', '6', '6', '6', '6'], ['Mark Porter', '9.00', '7.87', '9.12', '10.00'], ['Philip Sanchez', '6', '6', '6', '6']]
average = [6.970000000000001, 6.0, 8.9975, 6.0]

result = []
# 同时遍历每个学生信息和对应的平均分
for student_data, avg_score in zip(info, average):
    if avg_score >= 6.0:
        # 提取学生姓名和平均分加入结果
        result.append([student_data[0], avg_score])

# 按平均分降序排列
result.sort(key=lambda x: x[1], reverse=True)
print(result)

方法2:用enumerate获取索引遍历

如果你习惯用索引操作,可以用enumerate()拿到平均分的索引,再通过索引直接匹配对应的学生信息:

info = [['Frank Morgan', '7.89', '3.19', '6.90', '9.90'], ['Jesse Lawrence', '6', '6', '6', '6'], ['Mark Porter', '9.00', '7.87', '9.12', '10.00'], ['Philip Sanchez', '6', '6', '6', '6']]
average = [6.970000000000001, 6.0, 8.9975, 6.0]

result = []
# 遍历平均分的索引和对应值
for idx, avg_score in enumerate(average):
    if avg_score >= 6.0:
        # 通过索引idx直接取对应学生的姓名
        result.append([info[idx][0], avg_score])

# 按平均分降序排列
result.sort(key=lambda x: x[1], reverse=True)
print(result)

运行结果

两种方法都会输出符合要求的结果(按平均分降序排列):

[['Mark Porter', 8.9975], ['Frank Morgan', 6.970000000000001], ['Jesse Lawrence', 6.0], ['Philip Sanchez', 6.0]]

如果不需要排序,只保留原始筛选后的顺序,去掉result.sort(...)那行即可。

内容的提问来源于stack exchange,提问作者dun.py

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:55:53