打印邻接矩阵中行和列的索引

Print index of row and column in adjacency matrix

我有一个建立邻接矩阵的函数。我想提高矩阵对人类的可读性,所以我决定像这样打印行索引:

现在我想用同样的方法打印列索引,但是我做不到。我得到的最好结果是:

有什么想法和建议可以整齐地打印列索引吗?

源代码here.

def generate_adjacency_matrix(vertices):
    # Create empty Matrix
    matrix = [['.' for _ in range(len(vertices))] for _ in range(len(vertices))]
    # Fill Matrix
    for row in range(len(matrix)):
        for num in range(len(matrix)):
            if num in vertices[row]:
                matrix[row][num] = '1'
    # Print column numbers
    numbers = list(range(len(matrix)))
    for i in range(len(numbers)):
        numbers[i] = str(numbers[i])
    print('  ', numbers)

    #Print matrix and row numbers
    for i in range(len(matrix)):
        if len(str(i)) == 1:
            print(str(i) + ' ', matrix[i])
        else:
            print(i, matrix[i])

如果重要我函数中的参数是一个字典,如下所示:

{0:[1],
 1:[0,12,8],
 2:[3,8,15]
 ....
 20:[18]
}

如果你知道你只需要 20 个字符,那么只需将所有内容填充到 2 个字符即可:

对于 header 行:

numbers[i] = str(numbers[i].zfill(2))

对于其他行,设置为“.”或“.1”或其他看起来整洁的内容。

这似乎是最简单的方法。

另一种方法是有 2 列 headers,一列在另一列之上,第一个是十位值,第二个是单位值。这使您也可以在 table 中保持 1 的宽度,这可能是您需要的。