Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 按平均值对元组排序_Python_Sorting_Tuples - Fatal编程技术网

Python 按平均值对元组排序

Python 按平均值对元组排序,python,sorting,tuples,Python,Sorting,Tuples,我有一个元组,当前看起来如下所示: [['Hussain', 7, 8, 0], ['Max', 3, 4, 3], ['Alexandra', 10, 9, 8]] 我希望能够对这个元组进行排序,以便它按照从最高到最低的平均顺序打印出元组。这就是我所期望的结果: ['Alexandra', 9],['Hussain', 5],['Max', 3.3333333333] 我将非常感谢您给予的任何帮助 短暂性脑缺血发作 如果您没有使用python>=3.4,则可以手动执行平均值计算 print

我有一个元组,当前看起来如下所示:

[['Hussain', 7, 8, 0], ['Max', 3, 4, 3], ['Alexandra', 10, 9, 8]]
我希望能够对这个元组进行排序,以便它按照从最高到最低的平均顺序打印出元组。这就是我所期望的结果:

['Alexandra', 9],['Hussain', 5],['Max', 3.3333333333]
我将非常感谢您给予的任何帮助

短暂性脑缺血发作

如果您没有使用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)
作为分数/秒元素进行排序,并将
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>=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)
作为分数/秒元素进行排序,并将
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))


感谢您的快速响应,我真的很感激:)ele是python语法吗?或者它是你用来作为索引的东西。@Hussain,它只是一个变量名,你可以随意调用它Hanks只是想澄清一下我了解
itertools.islice的用法,但是你在这里拆分了哪些部分?谢谢你的快速响应,我真的很感激:)ele是python语法吗?或者它是你用作索引的东西。@Hussain,它只是一个变量名,你可以随意调用它Hanks只是想澄清一下我了解
itertools.islice的用法,但是你在这里拆分哪些部分?顺便说一句,你有一个列表而不是元组哦,对了,那么列表和元组的区别是什么呢我完全忘记了。看看这篇文章,了解一下它们的区别:顺便说一句,你有一个列表而不是元组哦,对了,那么列表和元组的区别是什么呢我完全忘了。看看这篇文章,了解一下它们的区别:排序需要一个可数。我使用列表理解给出排序后的第一个参数:[[e[0],s中e的sum(e[1:])/len(e[1:])=>[[[Hussain',5.0],'Max',3.3335],'Alexandra',9.0]]我使用timeit查看我们的函数之间的比较。当number=10000时,您的答案为:1.5141523819997929我的答案为:0.0845054299980826您的第一个答案:从统计导入平均值从运算符导入itemgetter排序([ele[0],mean(ele[1:]),对于l中的ele,key=itemgetter(1),reverse=True)导入可能会减慢它。不管怎样,我的答案有什么问题?它很快,一行,清晰,列表理解很好。老兄,你为什么要删除你的评论?排序需要一个iterable。我使用列表理解给出排序后的第一个参数:[[e[0],s中e的sum(e[1:])/len(e[1:])=>[[[Hussain',5.0],'Max',3.3335],'Alexandra',9.0]]我使用timeit查看我们的函数之间的比较。当number=10000时,您的答案为:1.5141523819997929我的答案为:0.0845054299980826您的第一个答案:从统计导入平均值从运算符导入itemgetter排序([ele[0],mean(ele[1:]),对于l中的ele,key=itemgetter(1),reverse=True)导入可能会减慢它。不管怎样,我的答案有什么问题?它很快,一行,清晰,列表理解很好。老兄,你为什么要删除你的评论?