计算欧几里得距离



我有下面的代码计算欧几里得距离。然而,我的功能基本上什么都没有。它没有输出,甚至没有错误,它只是运行并完成。

lst_a=[1,2,3,4,5]
lst_b=[1,2,4,5,8]
def distance(lst_a, lst_b):
sum_of = 0
for x, y in zip(lst_a, lst_b):
ans = (x - y)**2
sum_of += ans
return (sum_of)**(1/2)

调用函数了吗?

distance(lst_a, lst_b)

输出:

3.3166247903554

对于较长的列表,您还可以通过对生成器表达式求和来更快地完成此操作:

def distance(lst_a, lst_b):
return sum((x-y)**2 for x, y in zip(lst_a, lst_b))**0.5

或者您可以使用math.dist(如注释中所指出的),这仍然要快得多:

import math
def distance(lst_a, lst_b):
return math.dist(lst_a, lst_b)

最新更新