【问题标题】:What does arr.sort(key=lambda x: (x[0],-x[1])) mean?arr.sort(key=lambda x: (x[0],-x[1])) 是什么意思?
【发布时间】:2020-09-24 05:42:31
【问题描述】:
>>> 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 那么列表是如何排序的呢?

【问题讨论】:

    标签: arrays python-3.x list sorting lambda


    【解决方案1】:
    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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-18
      • 2021-08-02
      • 2017-06-24
      • 1970-01-01
      • 2014-11-06
      • 2015-03-24
      • 2014-01-07
      相关资源
      最近更新 更多