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

Python计算多列表间欧氏距离的代码问题排查与修复

修复欧氏距离计算的循环逻辑问题

你的代码核心问题出在**euclidean_list的初始化位置错误**,导致所有距离结果被追加到同一个列表中,无法按test2的元素分组。下面是具体的分析和修复方案:

问题根源

你将euclidean_list定义在所有循环之外,当遍历test2的每个元素时,新计算的距离会不断追加到这个列表里,最终所有距离都堆在一起,而不是每个test2元素对应一个独立的子列表。

修复后的代码

import math

euclidean_list_complete = []
test1 = [[0.0, 0.0, 0.0, 152.0, 12.29], [0.0, 0.0, 0.357, 245.0, 10.4], [0.0, 0.0, 0.10, 200.0, 11.0]]
test2 = [[0.0, 0.0, 0.0, 72.0, 12.9], [0.0, 0.0, 0.0, 80.0, 11.3]]

for i in range(len(test2)):
    euclidean_list = []  # 每次处理test2的一个元素时,初始化新的子列表
    euclidean = 0
    for j in range(len(test1)):
        for k in range(len(test1[0])):
            euclidean += pow((test2[i][k] - test1[j][k]), 2)
        # 保留三位小数,匹配期望输出格式
        euclidean_list.append(round(math.sqrt(euclidean), 3))
        euclidean = 0
    euclidean_list_complete.append(euclidean_list)

print(euclidean_list_complete)

关键修复点

  • 将euclidean_list的初始化移到test2的遍历循环内部,确保每个test2元素都有专属的子列表存储距离结果。
  • 修复了Python3的print语法(添加括号),保证代码兼容性。
  • 使用round()函数将距离值保留三位小数,和你期望的输出格式一致。

运行结果

执行后会输出:

[[80.002, 173.018, 128.014], [72.006, 165.002, 120.0]]

和你的期望输出完全匹配(120.0与120.000仅为小数显示格式差异,数值等价)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:56:48