Python—在列表中查找列表分数的平均值

Python—在列表中查找列表分数的平均值,python,Python,我试图用lambda在一个列表中找到一个列表的平均分数 Scores=[['James','Q',3,4,1,5],['Kat','S',3,4,1,2],['John','G',3,5,6,4]['Erikson','G',3,7,6,8],['Filip','NJ',3,8,9,9]] sortedScores=sorted(Scores,key=lambda score:avg(score[3:],reverse=False)) for i in Scores: print(i[

我试图用lambda在一个列表中找到一个列表的平均分数

Scores=[['James','Q',3,4,1,5],['Kat','S',3,4,1,2],['John','G',3,5,6,4]['Erikson','G',3,7,6,8],['Filip','NJ',3,8,9,9]]
sortedScores=sorted(Scores,key=lambda score:avg(score[3:],reverse=False))

for i in Scores:
    print(i[0:1],avg(i[3:]))

avg不是一个命令,那么在这段代码中计算平均值的最佳方法是什么?

您忘记了逗号,仅此而已:

Scores=[
    ['James','Q',3,4,1,5],
    ['Ryan','G',3,4,1,2],
    ['Klodiano','G',3,5,6,4]['Erikson','G',3,7,6,8],
    #                      ^^
    ['Filip','NJ',3,8,9,9]
]
如果没有逗号,列表['Klodiano','G',3,5,6,4]将被索引,但您传入的不是整数而是元组'Erikson','G',3,7,6,8

请注意,排序列表也有一个错误:

sortedScores=sorted(
    Scores,
    key=lambda score:avg(score[3:],reverse=False))
    #                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
您正在将reverse=False传递给avg callable,而不是sorted。你可能想要:

sortedScores=sorted(
    Scores,
    key=lambda score:avg(score[3:]),
    reverse=False)
相反

如果你想单独打印每个学生的名字,你不需要切片;您应该改用索引:

for i in Scores:
    print(i[0], avg(i[3:]))
最后,您要实现的任务要求最后3个分数,而不是除前1个之外的所有分数。您需要使用-3对最后3个分数进行切片以计算平均值:

avg(score[-3:])

你忘了一个逗号,仅此而已:

Scores=[
    ['James','Q',3,4,1,5],
    ['Ryan','G',3,4,1,2],
    ['Klodiano','G',3,5,6,4]['Erikson','G',3,7,6,8],
    #                      ^^
    ['Filip','NJ',3,8,9,9]
]
如果没有逗号,列表['Klodiano','G',3,5,6,4]将被索引,但您传入的不是整数而是元组'Erikson','G',3,7,6,8

请注意,排序列表也有一个错误:

sortedScores=sorted(
    Scores,
    key=lambda score:avg(score[3:],reverse=False))
    #                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
您正在将reverse=False传递给avg callable,而不是sorted。你可能想要:

sortedScores=sorted(
    Scores,
    key=lambda score:avg(score[3:]),
    reverse=False)
相反

如果你想单独打印每个学生的名字,你不需要切片;您应该改用索引:

for i in Scores:
    print(i[0], avg(i[3:]))
最后,您要实现的任务要求最后3个分数,而不是除前1个之外的所有分数。您需要使用-3对最后3个分数进行切片以计算平均值:

avg(score[-3:])

非常感谢。我真傻,没注意到!非常感谢。我真傻,没注意到!