Python sorted()如何处理列表中的列表
我对列表中的列表如何排序感到困惑Python sorted()如何处理列表中的列表,python,python-3.x,list,Python,Python 3.x,List,我对列表中的列表如何排序感到困惑 L = [[1,1,1],[0,9,0],[2,1,1]] sortedL返回[[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(sort
L = [[1,1,1],[0,9,0],[2,1,1]]
sortedL返回[[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]))
内置排序依次考虑iterable的每个元素。例如,[0,9,0]首先出现,因为0<1和0<2
为了帮助获得直觉,您可以测试几个示例:
[0,9,0] < [1,1,1] # True
[0,9,0] < [0,8,0] # False
[1,1,1] < [2,1,1] # True
第一个元素的0、1、2的顺序是否不合逻辑?如果要基于和进行排序,需要告诉它这样做:sortedL,key=sum它的可能重复项按字典顺序排序。如果两个子列表的第一个元素相等,则比较第二个元素,依此类推。
res = sorted(L, key=sum)