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

Python实现二维坐标系所有点间欧氏距离计算求助

Python实现欧氏距离求和算法

需求说明

计算给定4个点中,每个点与其余所有点的欧氏距离,并将所有这些距离求和(包含点对的双向计算,比如point1→point2和point2→point1都会被计入)。

实现步骤

  1. 定义点数据:将输入的点坐标整理为Python列表,方便遍历。
  2. 欧氏距离公式:两点(x_a, y_a)和(x_b, y_b)的距离为:√[(x_a - x_b)² + (y_a - y_b)²]
  3. 遍历所有点对:通过双重循环计算每一组点对的距离并累加。

代码实现(含重复计算)

import math

# 替换为实际的点坐标数值
points = [(x1, y1), (x2, y2), (x3, y3), (x4, y4)]
total_sum = 0.0

# 遍历每个点,与其余所有点计算距离
for idx, (x1, y1) in enumerate(points):
    for jdx, (x2, y2) in enumerate(points):
        # 跳过点自身与自身的组合
        if idx == jdx:
            continue
        # 计算欧氏距离
        dist = math.sqrt((x1 - x2)**2 + (y1 - y2)**2)
        total_sum += dist

print(f"所有点对的距离总和:{total_sum}")

优化版本(避免重复计算)

如果不需要重复计算双向点对(比如只算一次point1→point2,不再算point2→point1),可以调整循环逻辑,只遍历j > i的点对:

import math

points = [(x1, y1), (x2, y2), (x3, y3), (x4, y4)]
total_sum = 0.0

for i in range(len(points)):
    x_a, y_a = points[i]
    # 只遍历当前点之后的点,避免重复计算
    for j in range(i + 1, len(points)):
        x_b, y_b = points[j]
        dist = math.sqrt((x_a - x_b)**2 + (y_a - y_b)**2)
        total_sum += dist

print(f"唯一点对的距离总和:{total_sum}")

使用说明

把代码中的x1,y1、x2,y2等替换成实际的坐标数值即可运行,比如points = [(1,2), (3,4), (5,6), (7,8)]。

内容的提问来源于stack exchange,提问作者jonas gonçalves

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 13:35:22