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

Python中使用欧氏距离查找最近坐标点的实现问题

查找最近坐标点功能实现方案

实现说明

原有欧氏距离计算函数默认返回带提示语的字符串元组,仅适合直接打印输出,作为工具函数供其他逻辑调用时需要额外解析返回值,我们提供两种实现方案:

方案1(推荐):优化距离计算函数返回值

先调整distance函数直接返回数值型距离,后续逻辑更简洁,复用性更强:

from math import sqrt

# 优化后的距离计算函数,直接返回数值型距离
def distance(loc1_coordinates, loc2_coordinates):
    point1x, point1y = loc1_coordinates
    point2x, point2y = loc2_coordinates
    return sqrt((point1x - point2x)**2 + (point1y - point2y)**2)  

def closest_destination(start_city, city_dict):
    start_loc = city_dict[start_city]
    min_distance = float('inf')
    closest_city = ''
    # 遍历所有城市点位
    for city, loc in city_dict.items():
        # 跳过起点自身
        if city == start_city:
            continue
        current_dis = distance(start_loc, loc)
        # 更新最小距离对应的城市
        if current_dis < min_distance:
            min_distance = current_dis
            closest_city = city
    return closest_city

# 测试代码
cities = {'A':[5,21], 'B':[43,76], 'C':[56,19], 'D':[21,37], 'E':[76,23], 'F':[45,56], 'G':[23,13]}
print(closest_destination('A', cities)) # 输出结果为 G

方案2:保留原有distance函数不变

如果必须保留原有distance函数的返回格式,只需在调用时解析返回的距离字符串即可:

from math import sqrt
# 原有距离计算函数完全不变
def distance(loc1_coordinates, loc2_coordinates):
    point1x, point1y = loc1_coordinates
    point2x, point2y = loc2_coordinates
    Distance = sqrt((point1x-point2x)**2 + (point1y-point2y)**2)  
    return "The distance between this two points is", str(round(Distance, 14))+" units"

def closest_destination(start_city, city_dict):
    start_loc = city_dict[start_city]
    min_distance = float('inf')
    closest_city = ''
    for city, loc in city_dict.items():
        if city == start_city:
            continue
        # 解析原有函数返回的距离值
        _, dis_str = distance(start_loc, loc)
        current_dis = float(dis_str.rstrip(' units'))
        if current_dis < min_distance:
            min_distance = current_dis
            closest_city = city
    return closest_city

# 测试代码
cities = {'A':[5,21], 'B':[43,76], 'C':[56,19], 'D':[21,37], 'E':[76,23], 'F':[45,56], 'G':[23,13]}
print(closest_destination('A', cities)) # 输出结果为 G

内容的提问来源于stack exchange,提问作者Green Uit

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 05:36:03