gpt4 book ai didi

python - 从Python中的矩阵创建邻接列表图

转载 作者:行者123 更新时间:2023-11-30 22:52:05 28 4
gpt4 key购买 nike

所以我试图从字母矩阵中制作一个字母图(代表一个令人惊奇的板)。所以说我有类似的东西:

[ [ A, B, C, D], 
[E, F, G, H],
[I, J, K, L],
[M, N, O, P] ].

我希望每个节点都是一个字母,但我无法弄清楚如何获取每个节点的邻居。例如,节点 A 将有邻居 B、E 和 F。而节点 K 将有邻居 F、G、H、J、L、M、O 和 P。任何帮助将不胜感激!

最佳答案

您可以循环遍历矩阵中的每个节点,然后将右侧和下方的每个相邻节点添加到结果中:

matrix = [
['A', 'B', 'C', 'D'],
['E', 'F', 'G', 'H'],
['I', 'J', 'K', 'L'],
['M', 'N', 'O', 'P']
]

def add(adj_list, a, b):
adj_list.setdefault(a, []).append(b)
adj_list.setdefault(b, []).append(a)

adj_list = {}
for i in range(len(matrix)):
for j in range(len(matrix[i])):
if j < len(matrix[i]) - 1:
add(adj_list, matrix[i][j], matrix[i][j+1])
if i < len(matrix[i]) - 1:
for x in range(max(0, j - 1), min(len(matrix[i+1]), j+2)):
add(adj_list, matrix[i][j], matrix[i+1][x])

import pprint
pprint.pprint(adj_list)

输出:

{'A': ['B', 'E', 'F'],
'B': ['A', 'C', 'E', 'F', 'G'],
'C': ['B', 'D', 'F', 'G', 'H'],
'D': ['C', 'G', 'H'],
'E': ['A', 'B', 'F', 'I', 'J'],
'F': ['A', 'B', 'C', 'E', 'G', 'I', 'J', 'K'],
'G': ['B', 'C', 'D', 'F', 'H', 'J', 'K', 'L'],
'H': ['C', 'D', 'G', 'K', 'L'],
'I': ['E', 'F', 'J', 'M', 'N'],
'J': ['E', 'F', 'G', 'I', 'K', 'M', 'N', 'O'],
'K': ['F', 'G', 'H', 'J', 'L', 'N', 'O', 'P'],
'L': ['G', 'H', 'K', 'O', 'P'],
'M': ['I', 'J', 'N'],
'N': ['I', 'J', 'K', 'M', 'O'],
'O': ['J', 'K', 'L', 'N', 'P'],
'P': ['K', 'L', 'O']}

关于python - 从Python中的矩阵创建邻接列表图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38782820/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com