Python - 将数组的数组打印为表

时间:2016-03-05 12:55:18

标签: python arrays pretty-print

给定一个定义为

的数组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 个答案:

答案 0 :(得分:3)

您需要知道的是可能存在的最大位数。如果您的示例中的位数为3,请执行以下操作:

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

在宽度为3的字段中使用str(i).rjust(3)i右对齐,其中额外字符为空格。您可以使用str(i).zfill(3)将它们设为零,或者您可以使用str(i).rjust(3, "&")将它们设为任意内容。

输出:

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

答案 1 :(得分:1)

此代码将更具动态性。这将通过max_len找到最大数量的长度和rjust。

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]))

答案 2 :(得分:0)

为什么不为此使用numpy数组?

import numpy as np
print np.array(A)

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

答案 3 :(得分:0)

如果记录是一个整数,你不能在那里有这些空格,但这段代码似乎很好地拆分了数组。

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()

然后,您可以通过使用A作为数组TableFormat(A)来整齐地打印表格。可以将end="|"替换为您希望用

划分记录的任何内容

答案 4 :(得分:0)

最简单的方法是使用两个for循环

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

试试这个。