所以我的任务是计算欧几里德距离,然后按以下顺序将其相加:
例如:euc(AB)+ euc(BC)+ euc(CD)
这就是我的解决方法:
> pip install more-itertools
我的问题是:我如何才能准确地实现此功能,使其与任意数量的坐标(不仅仅是4)一起工作。
我指定import math
def distance_points(t1 = [], t2 = []) :
euc_distance = math.sqrt( (t1[0]-t2[0])**2 + (t1[1]-t2[1])**2 )
return euc_distance
def longueur(*points):
coordonates = []
for x in points:
coordonates += x
vectorA = [coordonates[0], coordonates[1]]
vectorB = [coordonates[2], coordonates[3]]
vectorC = [coordonates[4], coordonates[5]]
vectorD = [coordonates[6], coordonates[7]]
res = distance_points(vectorA, vectorB) + distance_points(vectorB, vectorC) + distance_points(vectorC, vectorD)
return res
print(longueur((0.5, 1.0), (2.0, 1.0), (2.5, -0.5), (-1.5, -1.0)))
和调用此函数的方式必须保持相同(使用多个元组)。
我已经在python文档中花了2个小时,但我承认我真的不知道要寻找什么
答案 0 :(得分:4)
不需要所有vectorX
变量。只需遍历points
列表即可。
def longeur(*points):
res = 0
for i in range(len(points)-1):
res += distance_points(points[i], points[i+1])
return res