按照多个点到一个点的距离来排序

红圈部分怎么写
图片描述

阅读 3.6k
2 个回答

你都会写这么多了,红圈部分不至于不会写吧。
x1, y1 = p1
x2, y2 = p2

from functools import partial
import math

points = [(1, 2), (3, 4), (5, 6), (7, 8)]
pt = (4, 3)

def distance(p1, p2):
    return math.hypot(p1[0] - p2[0], p1[1] - p2[1])

points.sort(key=partial(distance, pt))

其实没必要用偏函数

points.sort(key=lambda i: math.hypot(i[0] - pt[0], i[1] - pt[1])) #直接lambda就行

还有list.sort是无返回值的,你那样写打印的是None, newlist = sorted(list)才是有返回值的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题