gpt4 book ai didi

python - python3中的自定义比较函数

转载 作者:太空宇宙 更新时间:2023-11-03 12:26:29 26 4
gpt4 key购买 nike

我想按点到原点 (0,0) 的距离以升序对二维坐标系中的点进行排序。我找到了 this并尝试了一些东西,但我仍然无法得到想要的结果。

这是我的代码:

from functools import cmp_to_key

def my_comp(point1, point2):
return point1[0]*point1[0] + point1[1]*point1[1] < point2[0]*point2[0] + point2[1]*point2[1]

points = [ [3.1, 4.1], [0.9, 0.8], [1.0, 1.0] ]
sorted(points, key=cmp_to_key(my_comp))
print(points)

结果:

[[3.1, 4.1], [0.9, 0.8], [1.0, 1.0]]

预期:

[[0.9, 0.8], [1.0, 1.0], [3.1, 4.1]]

最佳答案

1) 您的 my_cmp() 函数应该返回三个值之一(+、- 或 0,具体取决于比较),但您只返回两个值(True 和 False)。

2) 您忽略了 sorted() 的返回值。 sorted() 不修改它的参数,它返回它的排序副本。

3) 不要使用 cmp 函数。它们很难描述,也很难实现。而是使用键函数。

怎么样:

def my_key(point1):
return point1[0]*point1[0] + point1[1]*point1[1]

points = [ [3.1, 4.1], [0.9, 0.8], [1.0, 1.0] ]
points = sorted(points, key=my_key)
print(points)

assert points == [ [0.9, 0.8], [1.0, 1.0], [3.1, 4.1] ]

关于python - python3中的自定义比较函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49327344/

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