arr.sort(key=lambda x: (x[0],-x[1])) 的意思是什么?

4
>>> 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]]

因此,我可以观察语句1和语句2执行之间的差异。我知道语句1按x [0]的升序对列表进行排序。但如果我们使用语句2,那么列表会如何排序?

1个回答

8
lambda x:(x[0],-x[1])

这将生成元组 (第一个元素,第二个元素的相反数)

当你对 2 元组进行排序时,它们会基于以下规则排序:

  1. 第一个元素
  2. 如果第一个元素相等,则基于第二个元素排序

因此,

arr.sort(key=lambda x:(x[0],-x[1]))

根据以下规则对列表 arr 进行排序:

  1. 第一个元素
  2. 如果第一个元素相等,则根据第二个元素的负数来排序。

(这就是为什么 [4,6] 排在 [4,5] 前面,因为 -6 < -5)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接