Как форматировать позиции элементов двумерного массива при выводе?

Подскажите пожалуйста, есть ли в Python методы, позволяющие выравнивать элементы в двумерном массиве, в зависимости от количества знаков в этом элементе? Например, у меня есть матрица случайных чисел размерностью МхМ (М вводит пользователь), диапазон чисел - от 1 до 50. Я хочу, чтобы при выводе все элементы в каждом столбце были выравнены по правому краю относительно друг друга. Т.е, делаю 3 отступа, если элемент - это однозначное число, и 2 отступа, если двузначное. Сделал это через if .. else, но может быть есть более лаконичный и красивый способ? заранее спасибо

from random import randint

M = int(input('Please enter the size of matrix: '))

matrix = [[randint(1, 50) for _ in range(M)] for _ in range(M)]

for i in range(M):
    for j in range(M):
        if matrix[i][j] <= 9:
            print('   {}'.format(matrix[i][j]), end=' ')
        else:
            print('  {}'.format(matrix[i][j]), end=' ')
    print()

Ответы (2 шт):

Автор решения: strawdog

Вы можете использовать встроенные форматеры f-строк:

arr = [[1,2,3,4],[11,12,13,14],[111,112,113,114],[1111, 1112]]

for i in arr:
    print(*[f"{x:>5}" for x in i]) #5 - размер паддинга
    1     2     3     4
   11    12    13    14
  111   112   113   114
 1111  1112
→ Ссылка
Автор решения: Servashu
for i in range(M):
    for j in range(M):
        print('{:>2d}'.format(matrix[i][j]), end=' ')
→ Ссылка