我正在尝试编写一个Python函数(不使用模块),它将遍历一系列坐标并找到两个后续点之间的欧几里德距离(例如,点a和b、b和c、c和d之间的距离等等)。经过几个小时的搜索,我发现了this post,我认为它解决了我的问题,所以我写下了:
myList = [[2, 3], [3,4], [4,5], [5,6], [6,7]]
def distance(pointOne,pointTwo):
eucDist = ((pointOne[0] - pointTwo[0])**2 + (pointOne[1] - pointTwo[1])**2)**0.5
return eucDist
def totalDistance(inputPoints):
dist = []
for item in inputPoints[1:]:
coordDist = distance(inputPoints[0],item)
dist.append(coordDist)
return sum(dist)
print totalDistance(myList)
但是,这将检索第一个点与其他点之间的距离。我一直在尝试如何为序列中的下一个点定义一个变量,但我对Python还很陌生,只是不太了解如何做到这一点。我目前正在编写totalDistance
函数,如下所示:
但我不知道如何定义pTwo。在
使用itertools和NumPy:
一种方法是:
基本上,记录第一项,然后从列表中的第二项开始迭代。为了更容易理解,
^{pr2}$pOne
和pTwo
交换可能更好,或者更清楚地使用更多的python名称:使用list comprehension和zip可以这样做:
代码:
或者对于Python 3(来自注释)使用^{} :
^{pr2}$测试代码
结果:
相关问题 更多 >
编程相关推荐