在for循环中创建n个变量

时间:2019-10-09 23:46:19

标签: python

所以我的任务是计算欧几里德距离,然后按以下顺序将其相加:

例如: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个小时,但我承认我真的不知道要寻找什么

1 个答案:

答案 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