如何编写Python函数middle_point计算坐标列表的中点元组
中点计算函数
middle_point实现方案 以下是完全匹配需求的可运行代码:
def middle_point(coordinates): point_num = len(coordinates) # 空输入直接返回空元组 if not point_num: return () res = [] # 按维度拆分所有坐标值 for dim_vals in zip(*coordinates): avg = sum(dim_vals) / point_num # 整数返回int类型,非整数保留1位小数匹配示例要求 if avg.is_integer(): res.append(int(avg)) else: res.append(round(avg, 1)) return tuple(res)
效果验证
- 测试用例1:
输入coordinates = [(2,4),(2,0)]
运行print(middle_point(coordinates)),输出结果为(2, 2),完全匹配示例要求。 - 测试用例2:
输入coordinates = [(2, 8, 7, 5), (6, 10, 1, 3), (1, 1, 4, 6)]
运行print(middle_point(coordinates)),输出结果为(3, 6.3, 4, 4.7),完全匹配示例要求。
逻辑说明
zip(*coordinates)会将传入的所有坐标元组按维度拆分,同维度的所有数值会被打包为一组,例如3个四维坐标传入后会拆分出4组,每组对应同一个维度的所有坐标值- 每组数值求和后除以坐标点总数得到该维度的平均值,额外增加了整数判断逻辑,符合示例中整数返回整数、小数保留1位的输出要求
- 如果你不需要固定保留1位小数,直接调整
round(avg, 1)里的保留位数即可,不需要小数位限制直接删除round方法即可 - 代码默认所有输入坐标的维度一致,若需要兼容维度不一致的输入,可在函数开头增加长度校验逻辑抛出异常即可
内容的提问来源于stack exchange,提问作者Ren
相关产品推荐
相关产品推荐

