You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何对二维列表按照与指定坐标点的距离排序

Python实现按坐标点距离排序

我们可以直接利用Python内置的sorted()函数的自定义key规则实现排序,比较两点距离时无需计算平方根,直接比较距离的平方和即可,两者的排序结果完全一致,还能减少不必要的运算开销。

完整可运行代码示例

def sort_by_distance(arr, target_point):
    # key为子元素坐标与目标点的距离平方和,按从小到大排序
    return sorted(arr, key=lambda item: (item[0] - target_point[0])**2 + (item[1] - target_point[1])**2)

# 测试用例1
arry1 = [[6,5,7,8],[2,5,5,6]]
target1 = [3,5]
print(sort_by_distance(arry1, target1))
# 输出: [[2, 5, 5, 6], [6, 5, 7, 8]]

# 测试用例2
arry2 = [[6, 6, 8, 10],  [3, 3, 8, 10], [15, 15, 8, 10]]
target2 = [16,16]
print(sort_by_distance(arry2, target2))
# 输出: [[15, 15, 8, 10], [6, 6, 8, 10], [3, 3, 8, 10]]

补充说明

  • 如果需要直接修改原数组而非生成新的排序后数组,可以使用列表的sort()方法:
arry1.sort(key=lambda item: (item[0] - target1[0])**2 + (item[1] - target1[1])**2)
  • 距离计算默认采用欧氏距离,完全匹配需求中的坐标距离比较规则。

内容的提问来源于stack exchange,提问作者tech tutorial

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 13:15:03