arrays - arr.sort(key=lambda x: (x[0],-x[1])) 是什么意思?
问题描述
>>> 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 那么列表是如何排序的呢?
解决方案
lambda x:(x[0],-x[1])
这会生成(第一个元素,第二个元素的负数)的元组
当您对 2 元组进行排序时,它们会根据
- 第一个元素
- 如果第一个元素相等,则第二个元素
所以
arr.sort(key=lambda x:(x[0],-x[1]))
根据以下对列表进行排序arr
:
- 第一个元素
- 如果第一个元素相等,则基于第二个元素的负数。
(这就是为什么[4,6]
领先于[4,5]
since -6 < -5
)
推荐阅读
- java - 数组中的 AVRO ENUM:不是联合运行时异常
- javascript - 将 SVG 图标导入 Svelte 应用程序的最佳方式
- shopify - 如何在产品或列表页面上显示特定集合
- reactjs - 在原子组件之间传递元素/引用的规范 React-Redux 方法是什么?
- service-broker - 如何在 Pine Script - Tradingview 中使用我自己的数据进行计算?
- mysql - 第 30 行的错误 1067 (42000):“created_at”的默认值无效
- google-apps-script - Google表格中的重复表格留下了自定义脚本
- javascript - React progects 在 Windows 10 中不起作用?
- reactjs - React 用 useReducer 替换 useState,同时还使用自定义钩子
- javascript - 为什么我的循环在 JavaScript 中不起作用?