【问题标题】:printing multiple lists vertically?垂直打印多个列表?
【发布时间】:2017-04-17 17:09:57
【问题描述】:

下午好, 我正在尝试垂直打印 8 个列表,但似乎找不到正确的格式。我知道您可以通过...垂直打印列表

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 

【问题讨论】:

  • 这里有一个提示:使用zip 获取需要在元组中打印的每一行。
  • 整个for循环可以这样完成:for L in tableaus: try: print([column for column in L]))...etc

标签: python list printing


【解决方案1】:

使用zip 旋转列表

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

没有zip,你可以做类似的事情

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

【讨论】:

  • 感谢您的快速响应!不幸的是,我正在开发的这个程序是针对学校项目的,我不允许使用 zip。有没有其他方法可以做到这一点,只需使用 .format()?
【解决方案2】:

也许这段代码可以解决您的问题。如果列表的长度不同,它也可以工作。

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'

【讨论】:

    猜你喜欢
    • 2014-06-29
    • 2013-11-24
    • 1970-01-01
    • 2016-02-24
    • 2018-05-04
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    • 1970-01-01
    相关资源
    最近更新 更多