Python如何基于已有两点距离函数计算点列表总距离
点列表相邻点累计总距离实现方案
核心实现逻辑非常直接,按以下步骤处理即可:
- 入参边界判断:如果传入的点列表长度小于2,不存在可计算的相邻点对,直接返回0,避免索引访问报错
- 初始化总距离累加值为0
- 从列表第二个元素开始遍历,每次取当前元素和前一个元素组成相邻点对,调用已有的
distance函数计算两点间距,累加到总距离中 - 遍历完成后返回累计的总距离值
你已经实现的distance函数可以直接复用,完整可运行代码如下:
import math # 已完成的两点间距计算函数 def distance(point1, point2): dist = math.sqrt((point2[0] - point1[0])** 2 + (point2[1] - point1[1])** 2) return dist # 新增的路径总距离计算函数 def total_distance(points): # 点数量不足2时无有效路径,返回0 if len(points) < 2: return 0.0 total = 0.0 # 逐对计算相邻点距离累加 for i in range(1, len(points)): total += distance(points[i-1], points[i]) return total
调用测试示例:
# 测试路径:依次经过(0,0)、(3,4)、(0,8)三个点 path = [(0,0), (3,4), (0,8)] print(total_distance(path)) # 输出结果为10.0,其中(0,0)到(3,4)距离为5,(3,4)到(0,8)距离为5,累计总距离10
如果偏好更简洁的写法,也可以借助zip函数直接配对相邻点,配合生成器表达式求和,代码更凝练:
def total_distance(points): return sum(distance(p1, p2) for p1, p2 in zip(points, points[1:])) if len(points) >= 2 else 0.0
内容的提问来源于stack exchange,提问作者Moxie
相关产品推荐
相关产品推荐

