繁体   English   中英

sorted() 如何对列表内的列表起作用

[英]How does sorted() work for lists inside of lists

我对列表中的列表如何排序感到困惑。

L = [[1,1,1],[0,9,0],[2,1,1]]

sorted(L)返回[[0, 9, 0], [1, 1, 1], [2, 1, 1]]

这意味着它不是基于总和,因为 0+9+0 大于其他两个。

不,它基于迭代器的所有元素,从迭代器的第一个元素开始

sorted(L,key=lambda x:(x[0],x[1],x[2]) #==sorted(L)

如果您需要按总和

sorted(L,key=sum) 

上面代码的更简化版本,以进一步理解关键参数

print(sorted(L,key=lambda x: x[0]+x[1]+x[2]))

内置sorted依次考虑可迭代的每个元素 因此,例如, [0, 9, 0]首先出现,因为0 < 10 < 2

为了帮助获得直觉,您可以测试一些示例:

[0,9,0] < [1,1,1]  # True
[0,9,0] < [0,8,0]  # False
[1,1,1] < [2,1,1]  # True

So sorted与比较运算符的定义方式一致。 Python 中的序列对象通常支持字典比较 要按每个列表的总和排序,您需要为key参数提供一个函数,在本例中为内置sum

res = sorted(L, key=sum)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM