2015-09-25 64 views
-7

實際上,我嘗試這麼做。如何垂直打印Python中不同長度的2D列表

我有一個一流的呼叫卡

class Card(object): 
def __init__(self, value, folldown,canMove): 
    self.value = value 
    self.folldown = folldown 
    self.canMove=canMove 

,我用它來打印

我要打印不同尺寸的a=[[0, 1], [0, 1, 2], [0, 1, 2, 3]]

二維列表中我要打印像這樣

0 0 0 
1 1 1 
    2 2 
    3 

我試圖打印這樣

for i in range(len(a)): 
    for j in range(len(a[i])): 
     print a[i][j] 

但結果卻是

0 
1 
0 
1 
2 
0 
1 
2 
3 
+5

看起來您希望我們爲您編寫一些代碼。儘管許多用戶願意爲遇險的編碼人員編寫代碼,但他們通常只在海報已嘗試自行解決問題時才提供幫助。證明這一努力的一個好方法是包含迄今爲止編寫的代碼,示例輸入(如果有的話),期望的輸出以及實際獲得的輸出(控制檯輸出,回溯等)。您提供的細節越多,您可能會收到的答案就越多。檢查[FAQ]和[問]。 –

+0

你可以顯示你的代碼請與你的錯誤,所以我們可以幫助解決這個問題? – idjaw

+0

玩弄[格式字符串語法](https://docs.python.org/3/library/string.html#format-string-syntax),看看你是否能得到它的工作。 – wwii

回答

2
a = [[0, 1], [0, 1, 2], [0, 1, 2, 3]] 
print '\n'.join(['\t'.join([str(x[i]) if len(x) > i else '' for x in a]) for i in range(len(max(a)))]) 

#0 0 0 
#1 1 1 
#  2 2 
#   3 
+0

對於我的解決方案I如果len(x)> i else''for x in,則在x'print'上添加.value \ n'.join(['\ t'.join([str(x [i] .value)一個])我在範圍內(len(max(a)))])'' – pdecarcer

1

另外,一個在線解決方案

a = [[0, 1], [0, 1, 2], [0, 1, 2, 3]] 
from itertools import izip_longest 
print "\n".join(("\t".join(map(str,l)) for l in izip_longest(*a, fillvalue=""))) 

你:

 
0 0 0 
1 1 1 
    2 2 
     3