gpt4 book ai didi

python - 按平均值对元组排序

转载 作者:太空宇宙 更新时间:2023-11-04 10:25:27 25 4
gpt4 key购买 nike

我有一个元组,目前看起来像下面这样:

[['Hussain', 7, 8, 0], ['Max', 3, 4, 3], ['Alexandra', 10, 9, 8]]

我希望能够对这个元组进行排序,以便它按照从最高到最低平均值的顺序打印出元组。这是我期望的结果:

['Alexandra', 9],['Hussain', 5],['Max', 3.3333333333]

如有任何帮助,我将不胜感激。

TIA

最佳答案

from statistics import mean
from operator import itemgetter
l = [['Hussain', 7, 8, 0], ['Max', 3, 4, 3], ['Alexandra', 10, 9, 8]]

print(sorted(([ele[0],mean(ele[1:])] for ele in l),key=itemgetter(1),reverse=True))

[['Alexandra', 9.0], ['Hussain', 5.0], ['Max', 3.3333333333333335]]

如果您不使用 python >= 3.4,您可以手动计算平均值。

print(sorted(([ele[0],sum((ele[1:])) /  len(l) - 1] for ele in l),key=itemgetter(1),reverse=True))

ele[0],mean(ele[1:]) 获取名称和剩余的分数元素,然后我们使用 itemgetter(1) 进行排序这是 score/second 元素作为键并设置 reverse=True 从高到低。

我还会使用 itertools.islice 来获取切片,避免使用正常切片构建新列表:

from itertools import islice
print(sorted(([ele[0],mean(islice(ele,1,None))] for ele in l),key=itemgetter(1),reverse=True))

或者不使用均值:

from itertools import islice
print(sorted(([ele[0],sum(islice(ele,1,None)) / len(l) - 1] for ele in l),key=itemgetter(1),reverse=True))

关于python - 按平均值对元组排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29571576/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com