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

Python实现Point2D点集平均距离计算函数的方法咨询

函数实现方案

核心思路

  • 先做入参校验:如果传入的点集长度小于2,直接抛出ValueError异常
  • 生成所有互不重复的点对:使用itertools.combinations取点集中2个元素的所有组合,天然规避重复点对的计算问题
  • 计算每对点的二维欧氏距离:两点坐标差的平方和开根号
  • 所有距离求和后除以点对总数,得到平均距离返回

你找到的参考代码逻辑是可直接复用的,其中combinations(points,2)就是专门用来生成不重复元素组合的工具,不用自己写嵌套循环做去重处理。

完整实现代码

import math
from itertools import combinations

Point2D = tuple[int, int]

def average_distance(points: set[Point2D]) -> float:
    if len(points) < 2:
        raise ValueError("点集元素数量不能少于2")
    # 计算所有点对的距离
    distances = [
        math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2)
        for (x1, y1), (x2, y2) in combinations(points, 2)
    ]
    # 返回平均距离
    return sum(distances) / len(distances)

效果测试

调用示例average_distance({(1,2), (3,4), (5,6)}),返回值约为3.7712,和题目要求一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 01:06:05