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

如何不导入第三方包实现两个元组列表中点的欧氏距离批量计算

问题原因分析

尝试1报错原因

  • 函数内部未定义point1变量,运行时会首先触发名称错误
  • Python原生不支持tuple类型直接执行减法运算,dataset1[i] - dataset2[i]是直接对两个坐标元组做减法,因此抛出类型错误
  • 函数参数设计不符合需求:该函数应该接收两个单点位参数计算距离,而不是直接传入两个完整数据集

尝试2报错原因

  • 循环逻辑错误:你用len(dataset1)作为循环上限,但dataset2长度远小于dataset1,当索引超过dataset2的最大下标时就会触发索引越界
  • 业务逻辑不符:需求是dataset2每个点和dataset1所有点逐一计算距离,而你写的是按索引对位计算两个数据集的对应点距离,完全不符合需求
正确实现代码
# 先定义两个单点之间的欧氏距离计算函数,支持任意维度点位
def calc_single_distance(point_a, point_b):
    distance = 0
    for a_coord, b_coord in zip(point_a, point_b):
        distance += (a_coord - b_coord) ** 2
    return distance ** 0.5

# 外层遍历逻辑,按需求计算所有组合的距离
def calc_all_distances(dataset1, dataset2):
    result = []
    for d2_point in dataset2:
        single_d2_distances = []
        for d1_point in dataset1:
            single_d2_distances.append(calc_single_distance(d1_point, d2_point))
        result.append(single_d2_distances)
    return result

# 样例测试
dataset1 = [(1.5, 2.4), (-7.9, 3.5), (6.3, 6.2), (8.3, 4.1), (4.1, 4.2)]
dataset2 = [(2.9, 3.0), (4.3, 2.9)]
print(calc_all_distances(dataset1, dataset2))

运行后返回的二维列表中,第一个子列表为dataset2第0个点和dataset1所有点的距离,第二个子列表为dataset2第1个点和dataset1所有点的距离,完全匹配需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 09:06:03