2016-11-29 87 views
0

所以我有一個列表L.如何使一個列表的列表顯示垂直

L = [[1],[2,3],[3,4,5]] 

我將如何去,使它看起來像這樣。

1 2 3 
    3 4 
     5 

我希望這能夠迭代。 我認爲最好的方法是嵌套循環,但我對從何處開始感到困惑。

編輯***

我設法讓一些類似於什麼我想做的事情。

L = [[1],[2,3],[3,4,5],[]] 
max_list= [] 

maxlen=max(len(l) for l in L) 
for row in range(maxlen): 
    max_list.append([]) 
    for col in tab: 
     try: 
      max_list[row].append(col[row]) 
     except: 
      max_list[row].append('') 
for col in max_list: 
    print(col) 

輸出:

[1, 2, 3, ''] 
['', 3, 4, ''] 
['', '', 5, ''] 

至於現在我將如何對其進行格式化,以

1 2 3 
    3 4 
     5 

回答

2

解決方案並不那麼優雅,代碼太多......

L = [[1],[2,3],[3,4,5]] 
max_length = max(map(len, L)) # finding max length 
output = zip(*map(lambda x: x + [' '] * (max_length - len(x)), L)) # filling every sublist with ' ' to max_length and then zipping it 
for i in output: print(*i) # printing whole result 

輸出:

1 2 3 
    3 4 
    5 

所以第3行是不是很明顯,我將它分解

>>> list(map(lambda x: x + [' '] * (max_length - len(x)), L)) 
[[1, ' ', ' '], [2, 3, ' '], [3, 4, 5]] 
>>> list(zip(*map(lambda x: x + [' '] * (max_length - len(x)), L))) 
[(1, 2, 3), (' ', 3, 4), (' ', ' ', 5)] 

UPDATE

爲了延長您需要提供關鍵字參數sepprint功能的空間:for i in output: print(*i, sep= ' ')

+0

謝謝。這可能是一個愚蠢的問題,但是有沒有辦法延長列間的空間。 – user3362571

+0

@ user3362571我已更新答案。 –

+1

非常感謝你的改變! – user3362571

0

假設你只是想打印該格式,這個怎麼樣代碼:

L = [[1],[2,3],[3,4,5]] 


#1 2 3 
# 3 4 
#  5 

for i in range(len(L)): 
    for lst in L: 
    if (i == 0): 
     print (lst[0], end='') 
    if (i == 1 and len(lst)>1): 
     print (lst[1], end='') 
    if (i == 2 and len(lst)>2): 
     print (lst[2], end='') 
    print ('\n') 

它只有我窩rks爲這個特定的情況,其中L = [[1],[2,3],[3,4,5]]但它打印所需的輸出。

+0

這只是一個例子。但感謝您的幫助! – user3362571