如何垂直打印此列表?

Unw*_*ast 5 python ascii-art

假设我有这个星号列表,我说它以这种方式打印:

list = ['* *', '*', '* * *', '* * * * *', '* * * * * *', '* * * *']
for i in list:
    print i
Run Code Online (Sandbox Code Playgroud)

所以在这里,输出是:

* *
*
* * *
* * * * *
* * * * * *
* * * *
Run Code Online (Sandbox Code Playgroud)

但我希望输出是垂直的,如下所示:

* * * * * *
*   * * * *
    * * * *
      * * *
      * * 
        * 
Run Code Online (Sandbox Code Playgroud)

这样做的任何提示?我试图概念化如何使用list comprehension或for-loops这样的东西,但是没有把它弄得很正确.

the*_*eye 7

myList = ['* *', '*', '* * *', '* * * * *', '* * * * * *', '* * * *']
import itertools
for i in itertools.izip_longest(*myList, fillvalue=" "):
    if any(j != " " for j in i):
        print " ".join(i)
Run Code Online (Sandbox Code Playgroud)

产量

* * * * * *
*   * * * *
    * * * *
      * * *
      * *  
        *  
Run Code Online (Sandbox Code Playgroud)


wim*_*wim 4

>>> from itertools import izip_longest
>>> list_ = ['a', 'bc', 'def']
>>> for x in izip_longest(*list_, fillvalue=' '):
...   print ' '.join(x)
... 
a b d
  c e
    f
Run Code Online (Sandbox Code Playgroud)

  • @UnworthyToast:“zip”(以及它的朋友,如“zip_longest”)是“转置”一系列序列的最明显的方法。您_可以_手动执行操作,但这会更困难、更冗长、更容易出错。阅读该函数的文档并使用它直到理解它,这比尝试找出并调试可怕的循环等价物会更好。 (2认同)