Sub*_*dip 4 arrays sorting lambda list python-3.x
>>> arr=[[4,5],[4,6],[6,7],[2,3],[1,1]]
>>> arr.sort(key=lambda x:x[0]) #statement 1
>>> arr
[[1, 1], [2, 3], [4, 5], [4, 6], [6, 7]]
>>> arr.sort(key=lambda x:(x[0],-x[1])) #statement 2
>>> arr
[[1, 1], [2, 3], [4, 6], [4, 5], [6, 7]]
Run Code Online (Sandbox Code Playgroud)
因此,我可以观察语句 1 和语句 2 的执行之间的差异。我知道语句 1 按 x[0] 的升序对列表进行排序。但是如果我们使用语句2那么列表是如何排序的呢?
lambda x:(x[0],-x[1])
Run Code Online (Sandbox Code Playgroud)
这会生成(第一个元素,第二个元素的负数)的元组
当您对 2 元组进行排序时,它们的排序基于
所以
arr.sort(key=lambda x:(x[0],-x[1]))
Run Code Online (Sandbox Code Playgroud)
arr根据以下条件对列表进行排序:
(这就是为什么[4,6]领先于[4,5]since -6 < -5)