You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何遍历元组列表生成点对并批量计算点间距离

实现步骤

1. 生成目标点对列表

要得到你需要的连续点对(包含最后一个点与第一个点的配对),可以通过遍历原列表的索引来实现:

point_list = [(54,8),(55,9),(56,10),(57,11)]
point_pairs = []
for i in range(len(point_list)):
    current_point = point_list[i]
    # 用取余操作让最后一个点的下一个点回到第一个点
    next_point = point_list[(i + 1) % len(point_list)]
    point_pairs.append((current_point, next_point))

执行后point_pairs的结构就是你需要的:
[((54,8),(55,9)), ((55,9),(56,10)), ((56,10),(57,11)), ((57,11),(54,8))]

2. 传入距离函数并汇总结果

假设你已有的距离函数为calculate_distance(接收两个点参数),比如标准欧几里得距离实现:

def calculate_distance(point_a, point_b):
    return ((point_a[0] - point_b[0])**2 + (point_a[1] - point_b[1])**2)**0.5

方式一:收集所有距离到列表

用列表推导式直接遍历点对,调用函数并收集结果:

all_distances = [calculate_distance(pair[0], pair[1]) for pair in point_pairs]
# 输出示例:[1.4142..., 1.4142..., 1.4142..., 4.2426...]

方式二:直接计算总距离

如果不需要单独保存每个距离,可直接在遍历过程中累加:

total_distance = 0
for current, next_p in point_pairs:
    total_distance += calculate_distance(current, next_p)
# 或者用生成器表达式更简洁:
total_distance = sum(calculate_distance(p[0], p[1]) for p in point_pairs)

更精简的写法(无需单独存点对)

如果不需要保留点对列表,可合并生成点对和计算的步骤:

total_distance = 0
for i in range(len(point_list)):
    current = point_list[i]
    next_p = point_list[(i + 1) % len(point_list)]
    total_distance += calculate_distance(current, next_p)

内容的提问来源于stack exchange,提问作者Dein_coder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 23:00:06