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

Python中不使用numpy和zip计算两个等长列表的欧氏距离

不使用numpy和zip计算两个等长列表的欧氏距离

原代码问题说明

你原来的思路里不需要嵌套循环,嵌套循环会遍历两个列表的所有元素组合,不符合欧氏距离对应位置计算的要求,同时原代码没有定义循环逻辑,x、y变量未赋值。

实现思路

  • 欧氏距离要求两个列表对应位置的元素做差计算,仅需要单循环按索引遍历即可
  • 因为题目明确两个列表长度相等,我们可以通过索引依次取出两个列表相同位置的元素参与计算
  • 计算逻辑:对每对对应位置元素做差后取平方,累加所有平方值后开平方,得到最终欧氏距离

完善后代码

def euclidean_distance(p1, p2):
    sum_sq = 0
    # 按索引遍历两个列表,取p1的长度作为遍历上限即可
    for i in range(len(p1)):
        diff = p1[i] - p2[i]
        sum_sq += diff ** 2
    return sum_sq ** 0.5

测试用例验证

例1测试

list_1 = [0, 5, 6]
list_2 = [1, 6, 8]
print(euclidean_distance(list_1, list_2)) 
# 输出结果约为2.449,对应√(1+1+4)=√6

例2测试

list_1 = [0, 1, 2, 3, 4]
list_2 = [5, 6, 7, 8, 9]
print(euclidean_distance(list_1, list_2))
# 输出结果约为11.180,对应√(25*5)=√125

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 08:24:08