Python - вывести массив в виде таблицы

Дан массив массива A, определенный как

A = [[1, 2, 3, 4], [10, 20, 30, 40], [100, 200, 300, 400]],

если вызывается функция печати

for i in range(0,3):
    print A[i]

следующий вывод

[1, 2, 3, 4]
[10, 20, 30, 40]
[100, 200, 300, 400].

Как я могу получить "более симпатичный" вывод, как это:

[  1,   2,   3,   4]
[ 10,  20,  30,  40]
[100, 200, 300, 400]

??? Спасибо

5 ответов

Решение

Все, что вам нужно знать, это максимальное количество цифр, которое может быть. Если количество цифр три, как в вашем примере, сделайте это:

for i in A:
    print(", ".join([str(l).rjust(3) for l in i]))

С помощью str(i).rjust(3) путы i Выровнено по правому краю в поле шириной 3, где дополнительные символы являются пробелами. Вы могли бы сделать их нули с str(i).zfill(3)или вы можете сделать их как угодно str(i).rjust(3, "&") например.

Выход:

  1,   2,   3,   4
 10,  20,  30,  40
100, 200, 300, 400

Этот код будет более динамичным. Это найдет максимальную длину и длину числа по max_len.

A = [[1, 2, 3, 4], [10, 20, 30, 40], [11100, 20033, 300, 400]]

max_len = len(str(max( max(i) for i in A)))

for i in A:
    print(", ".join([str(l).rjust(max_len) for l in i]))

Самый простой способ - использовать два для циклов

    for list in A:
        for element in list:
            print element, '\t',
        print '\n'

Попробуй это.

Почему бы не использовать для этого пустой массив?

import numpy as np
print np.array(A)

[[  1   2   3   4]
 [ 10  20  30  40]
 [100 200 300 400]]

Вы не можете иметь эти пробелы там, если запись является целым числом, но этот код, кажется, хорошо разделяет массив.

A = [1999999, 2, 3, 47678], [10, 20, 30, 40], [100, 200, 300, 400]
MaxLength=0
for i in range(0,3):
    for x in A[i]:
        MaxLength =len(str(x)) if MaxLength<len(str(x)) else MaxLength
for i in range(0,3):
    for x in range(0,len(A[i])):
        Length=MaxLength-len(str(A[i][x]))
        print((" "*Length)+str(A[i][x]),end="|")
    print()

Если вы хотите, вы можете вызвать это в определении, просто сделайте это:

def TableFormat(A):
    MaxLength=0
    for i in range(0,3):
        for x in A[i]:
            MaxLength =len(str(x)) if MaxLength<len(str(x)) else MaxLength
    for i in range(0,3):
        for x in range(0,len(A[i])):
            Length=MaxLength-len(str(A[i][x]))
            print((" "*Length)+str(A[i][x]),end="|")
        print()

Затем вы можете распечатать таблицу аккуратно, выполнив TableFormat(A) с А в качестве массива. end="|" можно поменять на все, что вы хотите разделить записи с

Другие вопросы по тегам