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

如何修正Python代码实现向节点邻接列表添加关联矩阵行

修正后的代码实现

你的原代码主要存在两个核心问题:

  • 索引对应错误:n_list的下标是从0开始的,但节点编号是从1开始的,应该用k-1作为n_list的索引,而非矩阵行号i
  • 重复添加行:原代码遍历每行的每个元素,只要匹配到k就添加一次该行,会导致同一行被多次重复添加

下面是修正后的代码:

import numpy as np
E = np.array([[1, 2, 4],
              [2, 5, 4],
              [2, 3, 5],
              [3, 6, 5],
              [4, 5, 7],
              [5, 8, 7],
              [5, 6, 8],
              [6, 9, 8]])
Nn = np.max(E)
print("maximum node number: \n", Nn)
n_row, n_column = E.shape
print("\n", n_row, n_column)
n_list = [[] for x in range(Nn)]
print("\n initialize n vector\n", n_list)

for k in range(1, Nn+1):
    print(k)
    # 遍历矩阵每一行,检查该行是否包含当前节点k
    for row in E:
        if k in row:
            # 转换为普通列表优化可读性,需保留numpy数组可去掉.tolist()
            n_list[k-1].append(row.tolist())

print("\n n vector\n", n_list)

关键修正说明:

  • 用for k in range(1, Nn+1)替代while循环,逻辑更简洁直观
  • 直接遍历矩阵的每一行,通过k in row判断是否包含目标节点,避免重复添加同一行
  • 用n_list[k-1]对应节点k的存储位置(节点1对应下标0,以此类推)
  • 可选转换为普通列表:row.tolist()让输出结果更易读,若需保留numpy数组格式可直接移除该方法

运行后结果完全符合需求:

  • 节点1对应n_list[0],仅包含第一行[1,2,4]
  • 节点2对应n_list[1],包含矩阵的第1、2、3行
  • 其余节点均按规则匹配到所有包含自身的矩阵行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 05:25:27