История изменений
Исправление 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 раз больше не озвучивается.