gpt4 book ai didi

python - for循环中的自定义排序

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:29:57 28 4
gpt4 key购买 nike

假设我得到了一个包含 n 个点(一对坐标)的数组。我想生成一个二维点数组,其中第 ith 行的所有元素都根据它们与第 ith 点的距离排序。可能有更好、更有效的算法来获得最终结果,但出于某些原因,我想通过朴素算法来完成,即蛮力。我也不想编写自己的排序函数。

在C语言中,可以使用qsort函数,但它的比较函数只有两个参数,而我需要传递三个参数:引用点和另外两个要比较的点。

在 Python 中,也可以使用 sorted 函数,但同样,它的关键函数只需要一个参数,而在这种情况下,我需要传递两个参数。

那我该怎么做呢?

最佳答案

您可以定义一个函数制作函数来为每个点创建一个自定义距离函数。

pts = [(1,1), (3,4), (1,8), (7,6)]

def mk_distsq(a):
def distsq(b):
return ((b[0]-a[0])**2 + (b[1]-a[1])**2)**0.5
return distsq

dist = [sorted(pts, key=mk_distsq(pt)) for pt in pts]

关于python - for循环中的自定义排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20295446/

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