LINUX.ORG.RU

История изменений

Исправление tailgunner, (текущая версия) :

У меня считается максимальная ширина столбцов для каждого столбца отдельно. У тебя для всей таблицы сразу.

maxlen = [max(map(len, col)) for col in zip(*matr)]
rj, lj = lambda s, i: s.rjust(maxlen[i]), lambda s, i: s.ljust(maxlen[i])
aligned_rows = [[lj(elt, n) if n < 2 else rj(elt, n)
                 for (n, elt) in enumerate(row)]
                for row in matr]
print "\n".join(["| " + " | ".join(r) + " |" for r in aligned_rows])

(join прямо в list comprehension мне никогда не нравился %)

Ты хочешь сказать, что каша это только на Питоне, а на Руби - кристально чистый и прозрачный код,

Именно это я и хочу сказать.

Никто и не ожидал другого. Хорошо хоть, что утверждение про 2-5 раз больше не озвучивается.

Исходная версия tailgunner, :

У меня считается максимальная ширина столбцов для каждого столбца отдельно. У тебя для всей таблицы сразу.

maxlen = [max(map(len, col)) for col in zip(*matr)]
rj, lj = lambda s, i: s.rjust(maxlen[i]), lambda s, i: s.ljust(maxlen[i])
aligned_rows = [" | ".join([lj(elt, n) if n < 2 else rj(elt, n)
                            for (n, elt) in enumerate(row)])
                for row in matr]
print "\n".join(["| " + r + " |" for r in aligned_rows])

Ты хочешь сказать, что каша это только на Питоне, а на Руби - кристально чистый и прозрачный код,

Именно это я и хочу сказать.

Никто и не ожидал другого. Хорошо хоть, что утверждение про 2-5 раз больше не озвучивается.