我有一个无序点列表(2D),想要计算它们之间距离的总和。 由于我的背景是C++开发者,我会像这样做:
import math
class Point:
def __init__(self, x,y):
self.x = x
self.y = y
def distance(P1, P2):
return math.sqrt((P2.x-P1.x)**2 + (P2.y-P1.y)**2)
points = [Point(rand(1), rand(1)) for i in range(10)]
#this part should be in a nicer way
pathLen = 0
for i in range(1,10):
pathLen += distance(points[i-1], points[i])
有没有更符合Python风格的方式来替换for循环?例如使用reduce或类似的东西?
最好的问候!
math.sqrt((P1.x+P2.x)**2 ...
。距离应该使用-
而不是 **+
**。期望distance(P, P)
的值为0! - Serge Ballesta