gpt4 book ai didi

Python:使用 lambda 键混淆进行排序

转载 作者:行者123 更新时间:2023-12-05 04:47:15 24 4
gpt4 key购买 nike

.sort(key=lambda x: x[0]).sort(key=lambda x: (x[0], -x[1] 有什么区别))。我以为他们俩基本上都会对列表进行排序。

我试过一个例子:

lst = [[2,1], [0,4], [6,7], [3, 5]]
lst.sort(key=lambda x: x[0])
print(last)

>>> [[0, 4], [2, 1], [3, 5], [6, 7]]
lst = [[2,1], [0,4], [6,7], [3, 5]]
lst.sort(key=lambda x: (x[0], -x[1]))
print(last)

>>> [[0, 4], [2, 1], [3, 5], [6, 7]]

在这种情况下,它们的工作原理完全相同。

在此LeetCode problem , 然而,当我使用第一种方法 (key=lambda x: x[0]) 时,我得到了错误的答案

enter image description here

当我使用第二种方法 (key=lambda x: (x[0], -x[1])) 时,解决方案被接受。

enter image description here

我的最终代码如下所示:

class Solution:
def removeCoveredIntervals(self, intervals: List[List[int]]) -> int:
# intervals.sort(key=lambda x: x[0])
intervals.sort(key=lambda x: (x[0], -x[1]))
last = -1
removed = 0
for i in intervals:
if i[1] <= last:
removed += 1
else:
last = i[1]
return len(intervals) - removed

此外,我猜问题出在以相同左端开始的区间(如错误答案)。当我单独尝试那个测试用例时,我得到了这个:

lst = [[1,2], [1,4], [3,4]]
lst.sort(key=lambda x: x[0])
print(last)

>>> [[1, 2], [1, 4], [3, 4]]
lst = [[1,2], [1,4], [3,4]]
lst.sort(key=lambda x: (x[0], -x[1]))
print(last)

>>> [[1, 4], [1, 2], [3, 4]]

虽然右端的顺序似乎有点不同。

最佳答案

lst.sort(key=lambda x: x[0]) 中,您将按每个子列表中的第一个元素对列表进行排序,而忽略其余元素。

lst.sort(key=lambda x: (x[0], -x[1])) 中,您按第一个元素对列表进行排序,如果有两个元素具有相同值的排序将由第二个元素完成。

在第二个sort()中,-x[1]表示与第二个元素中的值相反,所以[1, 4] 小于 [1, 2],而在第一个排序中顺序保持不变,因为只考虑第一个值。

关于Python:使用 lambda 键混淆进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68554829/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com