gpt4 book ai didi

python - 将函数传递给排序函数的键

转载 作者:太空宇宙 更新时间:2023-11-04 09:57:49 25 4
gpt4 key购买 nike

我有一个 list

lis = [ [0, 1], [1, -1], [1, 0] ]

我想根据特定条件对其进行排序。我想使用一种逻辑,每当 lis[i][0] 等于 lis[i + 1][0] 时,交换元素。有点像

在上面的列表中,第二个和第三个元素是[1, -1][1, 0],其中lis[i][0 ] == lis[i + 1][0]。所以我将交换它,使我的新列表变成

lis = [ [0, 1], [1, 0], [1, -1] ]

这是我的功能:

def sortList(lis3):
for i in range(0, len(lis3) - 1):
for j in range(i + 1, len(lis3)):
if lis3[i][0] == lis3[j][0]:
lis3[i], lis3[j] = lis3[j], lis3[i]

我想将此函数传递给列表的 sort 方法,以便它根据此逻辑进行排序:

我试过这样做但不起作用:

lis.sort(key=sortList)

如何让这个函数在 sort 方法中工作?

最佳答案

您无法使用 list.sortsorted 使其可靠地工作。问题是这些函数背后的排序算法不能保证哪些元素被比较或不被比较(它只是说结果将被排序)。要使 list.sortsorted 可靠地工作,您需要 total ordering relation ,你的函数没有提供。

此外 key 应该是一个将一个元素转换为“应该比较的属性”的函数,它确实将列表的每个元素传递给 key 函数不是总列表(事实上,在 CPython 中,当您对它进行排序时,该列表是空的,所以它根本无法工作)。

关于python - 将函数传递给排序函数的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45103046/

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