2017-04-17 88 views
0

大家下午好, 我试图打印8列表veritcally,似乎无法找到正确的格式。我知道你可以垂直打印一个列表...垂直打印多个列表?

for x in list: 
    print(x) 

但是,我不知道我将如何在一行中垂直打印多个列表。 我想沿着这个线的东西....

for L in range(0,7): 
    print(" ", end="") 
    try: 
     for column in tableaus: 
      print("{***}".format(str(tableaus[0][8]))) 

    except IndexError: 
     raise RuntimeError("error occurred creating the tableaus") 

Tableaus,如果印刷本身看起来是这样的:

[[K♠, 5♠, 10♥, 2♥, 7♦, Q♣, 4♣], [Q♠, 4♠, 9♥, A♥, 6♦, J♣, 3♣], [J♠, 3♠, 8♥, K♦, 5♦, 10♣, 2♣], [10♠, 2♠, 7♥, Q♦, 4♦, 9♣, A♣], [9♠, A♠, 6♥, J♦, 3♦, 8♣], [8♠, K♥, 5♥, 10♦, 2♦, 7♣], [7♠, Q♥, 4♥, 9♦, A♦, 6♣], [6♠, J♥, 3♥, 8♦, K♣, 5♣]] 

我希望它看起来更像是这样的:

l l l l l l l l 
i i i i i i i i 
s s s s s s s s 
t t t t t t t t 
. . . . . . . . 
. . . . 5 6 7 8 
1 2 3 4 
+0

这里有一个提示:使用'zip'获得需要在一个元组打印每一行。 –

+0

整个for循环可以这样完成:'对于tableaus中的L: 尝试: print([列中列为L]))... ...等 – davedwards

回答

0

使用zip旋转列表

for l in zip(*tableaus): 
    print(*l) 

没有zip,你可以不喜欢

for i in len(tableaus[0]): 
    print(' '.join([l[i] for l in tableaus])) 
+0

感谢您的快速响应!不幸的是,我正在处理的这个程序是针对一个学校项目的,我不允许使用zip。有没有其他的方式来做到这一点,只是通过玩.format()? – user7497887

+0

查看我编辑的非zip解决方案 –

0

也许这个代码解决您的问题。它也适用于列表长度不同的情况。

tableaus = [ 
    ['a', 'b', 'c'], 
    [1, 2, 3, 4, 5] 
] 
tableas_empty = [False for tableau in tableaus] 

separator = ' ' 
empty_value = ' ' 

while not all(tableas_empty): 
    row = [] 
    for i, item in enumerate(tableaus): 
     if item: 
      value = item.pop(0) 
      row.append(str(value)) 
     else: 
      tableas_empty[i] = True 
      row.append(empty_value) 
    separator.join(row) 

结果:

'a 1' 
'b 2' 
'c 3' 
' 4' 
' 5'