2016-03-05 59 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' 

試試這個。