【发布时间】:2020-09-25 20:39:36
【问题描述】:
答案是here。
我在笛卡尔平面上有以下几点
points = [(4, 5), (-0, 2), (4, 7), (1, -3), (3, -2), (4, 5), (3, 2), (5, 7), (-5, 7), (2, 2), (-4, 5), (0, -2), (-4, 7), (-1, 3), (-3, 2), (-4, -5), (-3, 2), (5, 7), (5, 7), (2, 2), (9, 9), (-8, -9)]
我需要使用欧几里得距离找到离中心最近的点。
到目前为止,我已经这样做了:
import math
euclidean_distance=[]
distance = math.sqrt(sum([((x+y)**2) for (x,y) in points]))
for (x,y) in points:
int(distance)
euclidean_distance.append(distance)
min_distance=min(euclidean_distance)
print(distance)
print(euclidean_distance)
print(min_distance)
结果是:
38.71692136521188
[38.71692136521188, 38.71692136521188, 38.71692136521188, 38.71692136521188, 38.71692136521188, 38.71692136521188, 38.71692136521188, 38.71692136521188, 38.71692136521188, 38.71692136521188, 38.71692136521188, 38.71692136521188, 38.71692136521188, 38.71692136521188, 38.71692136521188, 38.71692136521188, 38.71692136521188, 38.71692136521188, 38.71692136521188, 38.71692136521188, 38.71692136521188, 38.71692136521188]
38.71692136521188
为什么不计算列表中每个点的欧几里得距离?
【问题讨论】:
-
euclidean_distance.append(distance):您在列表中添加了 n 次相同的值distance,并且此值distance在循环期间不会更改。您可能希望将distance定义为一个函数而不是单个值。 -
这是
sqrt(x**2 + y**2),而不是(x+y)**2。 -
如果你运行 python >= 3.8,数学模块有一个
dist函数你可以使用。这是link
标签: python list euclidean-distance cartesian-coordinates