Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.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 sorted()如何处理列表中的列表_Python_Python 3.x_List - Fatal编程技术网

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)