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

Python构建客户距离矩阵求助(禁用Numpy/Pandas)

解决方案

你的核心问题是当前代码将所有客户间距离存入了一维列表,要改成二维距离矩阵(每个子列表对应单个客户到所有其他客户的距离)。修改思路很直接:在外层循环中为每个客户创建一行距离列表,内层循环计算该客户到所有客户的距离并填充到行列表,最后把行列表加入到矩阵中。

修改后的代码如下:

from math import sqrt  # 确保导入sqrt函数,否则会报错

# 计算两点间距离
def get_distance(a,b):
    d = [a.getX()- b.getX() , a.getY() - b.getY()]
    return sqrt(d[0] * d[0] + d[1] * d[1])

# 生成客户间距离矩阵
distance_matrix = []
for i in range(nr_customers):
    # 为当前客户i初始化一行距离列表
    current_row = []
    for j in range(nr_customers):
        # 计算一次距离并存储,避免重复调用函数浪费资源
        dist = get_distance(customer[i], customer[j])
        current_row.append(dist)
    # 将该行加入距离矩阵,形成二维结构
    distance_matrix.append(current_row)

关键修改说明:

  • 外层循环新增current_row = [],专门存储当前客户i到所有客户j的距离
  • 内层循环将计算结果添加到行列表,而非直接追加到外层矩阵
  • 移除了原代码中重复调用get_distance的冗余操作,优化了性能

修改后,distance_matrix会是一个nr_customers × nr_customers的二维列表,比如3个客户的矩阵结构如下:

[
  [客户0到0的距离, 客户0到1的距离, 客户0到2的距离],
  [客户1到0的距离, 客户1到1的距离, 客户1到2的距离],
  [客户2到0的距离, 客户2到1的距离, 客户2到2的距离]
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 08:31:05