Python实现欧几里得距离计算结果错误问题排查
问题根源
代码计算结果错误的核心原因是循环内的平方差计算逻辑完全偏离欧几里得距离定义:
- 欧几里得距离计算规则为:对两个向量相同索引位置的元素求差值,将差值平方后累加,最后对累加和开平方,每个索引位仅需计算1次平方差
- 你当前的循环逻辑硬编码取了两个向量索引为0的元素,分别和对方的第i位元素做差,单次循环就累加了2个错误的平方项,最终求和结果完全不符合计算要求
另外import math语句写在函数内部计算流程中属于不规范写法,建议放到代码头部统一引入。
修正后的实现
import math def euclidean_distance(vector1 , vector2): sum_squares = 0 vector_length = len(vector1) # 增加长度校验,避免两个向量长度不匹配触发索引错误 if len(vector2) != vector_length: raise ValueError("输入的两个向量长度必须一致") for i in range(vector_length): # 计算第i位坐标差 diff = vector2[i] - vector1[i] # 差的平方累加到总和 sum_squares += diff ** 2 # 对平方和开根号得到最终欧几里得距离 distance = math.sqrt(sum_squares) return distance
效果验证
以二维向量[1,2]和[4,6]为例,手动计算的正确距离为$\sqrt{(4-1)^2 + (6-2)^2}=5$,调用修正后的函数将正确返回5.0。
内容的提问来源于stack exchange,提问作者jayjay_roy
相关产品推荐
相关产品推荐

