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="|"
можно поменять на все, что вы хотите разделить записи с