Вывести индекс строки и столбца в матрице смежности - PullRequest
0 голосов
/ 19 февраля 2020

У меня есть функция для построения матрицы смежности. Я хочу улучшить читаемость матрицы для людей, поэтому я решил напечатать индекс строки следующим образом: enter image description here

Теперь я хочу напечатать индекс столбца таким же образом, но я могу ' сделать это правильно. лучший результат, который я получаю, это: enter image description 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]
}

1 Ответ

1 голос
/ 19 февраля 2020

Если вы знаете, что вы наберете только 20, то просто добавьте все к двум символам:

Для строки заголовка:

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

Для других строк установите значение " . "или" .1 "или что-то еще, что выглядит аккуратно.

Казалось бы, самый простой способ.

Альтернативный способ состоит в том, чтобы иметь 2 заголовка столбца, один над другим, первый - значение десятков, второй - значение единицы. Это позволяет вам сохранить ширину 1 в таблице, что, возможно, вам понадобится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...