如何在不使用 numpy 或 zip 的情况下找到两个列表之间的欧几里得距离?

Posted

技术标签:

【中文标题】如何在不使用 numpy 或 zip 的情况下找到两个列表之间的欧几里得距离?【英文标题】:How do I find the euclidean distance between two lists without using numpy or zip? 【发布时间】:2021-12-20 22:23:10 【问题描述】:

​​如何在不使用 numpy 或 zip 功能的情况下找到两个列表之间的欧式距离?此外,列表的长度相同,但列表的长度没有定义。

例如:

前 1.

list_1 = [0, 5, 6]
list_2 = [1, 6, 8]

ex2.

list_1 = [0, 1, 2, 3, 4]
list_2 = [5, 6, 7, 8, 9]

到目前为止我有:

    def euclidean_distance(p1, p2):
        sum = 0
        #(I think I need a for loop, possibly nested? --> For x in... for y in...)
        ans = (x-y) ** 2
        sum += ans
        return (sum) ** (1/2)

【问题讨论】:

sum是Python内置的,尽量不要用它作为变量名。 【参考方案1】:

我认为你可以像这样简化你的 euclidean_distance() 函数:

def euclidean_distance(p1, p2):
        return abs(p1- p2)

一种解决方案是在函数外部循环遍历列表:

for i in range(len(list_1)):
    print(euclidean_distance(list_1[i], list_2[i]))

另一种解决方案是使用 map() 函数:

for result in map(euclidean_distance, list_1, list_2):
    print(result)

对于

list_1 = [0, 5, 6]
list_2 = [1, 6, 8]

这会给你输出:

1
1
2

【讨论】:

以上是关于如何在不使用 numpy 或 zip 的情况下找到两个列表之间的欧几里得距离?的主要内容,如果未能解决你的问题,请参考以下文章

如何在不使用 numpy 的情况下计算 python 中的标准偏差?

如何在不使用 NumPy 复制的情况下展平多维数组的轴?

如何在不使用 numpy 的情况下将 2D 列表展平为 1D? [复制]

如何在不使用 Ruby 保存到磁盘的情况下生成 zip 文件?

如何在不使用 Pandas 的情况下创建等效于 numpy.nan 的日期时间对象?

如何在不使用外部库(例如 Numpy、Pandas)的情况下读取 CSV 文件?