2016-03-05 37 views
1

鉴于定义为的Python - 数组作为表中的打印阵列

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

阵列A的数组,如果打印功能被称为

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] 

??? 谢谢

回答

3

所有你需要知道的是可能的最大位数。如果位数为三成在你的榜样,这样做:

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 
+0

哇!刚刚学到了一些新的东西......我想出了一个解决方案,但它是非pythonic'。谢谢@zondo – danidee

+0

它工作正常,谢谢! – user1403546

+0

这不会很好地动态工作,动态是python必须为我所用,所以它应该更适用于许多情况下,而不适合一种情况。 –

0

为什么不利用这个numpy的阵列?

import numpy as np 
print np.array(A) 

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

此代码将更具动态性。这将通过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])) 
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() 

然后,你可以通过用作为数组做TableFormat(A)整齐地打印表格。该end="|"可以换成你想与

0

最简单的方式来划分记录什么是使用两个for循环

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

试试这个。