簡體   English   中英

如何使列表垂直顯示

[英]How to make a list of lists display vertically

所以我有一個清單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

解決方案不是那么優雅,代碼太多...

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

所以第三行不是那么明顯,我將其分解

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

更新

要加長空格,您需要為print功能提供關鍵字參數sepfor i in output: print(*i, sep= ' ')

假設您只是嘗試以該格式打印,那么這段代碼如何:

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

它僅適用於此特定情況,其中L = [[1],[2,3],[3,4,5]]但它會打印所需的輸出。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM