2015-09-04 49 views
3

我想在Python中制作图形设计的问题,更具体地说是ASCII“横幅”单词。每个字母都由字符行的嵌套列表组成。在某些方向上打印嵌套列表 - Python

[[' _______ ', '(  )', '|()() |', '| || || |', '| |(_)| |', '| | | |', '|) (|', '|/  \\|'], [' _______ ', '( ____ \\', '| ( \\/', '| (__ ', '| __) ', '| (  ', '| (____/\\', '(_______/']] 

当打印下来每个嵌套表和整个整个的事情,他们提出了一个字。 正如我上面所说,我无法打印它,每个嵌套列表和整个事物都是如此。 在此先感谢!

+0

,你能否告诉我们到目前为止你已经尝试了什么? –

+0

是否要打印列表中的每个元素它不清楚你要问什么 – The6thSense

回答

9

如果你想打印从左边的字母对,你将不得不zip与自己的名单,有效地"transposing"它。这样,第一个列表将包含所有第一行,第二个列表包含所有第二行,依此类推。现在只需join那些,你就完成了。

>>> ascii = [[' _______ ', '(  )', '|()() |', '| || || |', '| |(_)| |', '| | | |', '|) (|', '|/  \\|'], [' _______ ', '( ____ \\', '| ( \\/', '| (__ ', '| __) ', '| (  ', '| (____/\\', '(_______/']] 
>>> print '\n'.join((' '.join(line) for line in zip(*ascii))) 
_______ _______ 
(  ) ( ____ \ 
|()() | | ( \/ 
| || || | | (__  
| |(_)| | | __) 
| | | | | (  
|) (| | (____/\ 
|/  \| (_______/ 

如果你想从顶部打印信件底部,您可以使用此:

>>> print '\n\n'.join(('\n'.join(line) for line in ascii)) 
+0

这是非常好的。如果'''.join(line)'被替换为'''.join(line)',那么两个字母之间会有一个很好的间距。 –

+0

@JohnColeman你说得对,我加了一些空格。 –

+0

这正是我想要的。非常感谢你! – dcarroll9999

2

虽然不清楚你想要什么输出,但我相信你可以从使用string.join()函数中受益。

编辑

啊哈,这是现在很清楚你正在尝试做的。使用@tobias_k的解决方案,我建议你可以很容易通过做这样的事情来编辑你的信:

m = """ 
_______ 
(  ) 
|()() | 
| || || | 
| |(_)| | 
| | | | 
|) (| 
|/  \| 
""".split('\n') 

e = """ 
_______ 
( ____ \ 
| ( \/ 
| (__  
| __)  
| (  
| (____/\ 
(_______/ 
""".split('\n') 

lines = zip(m,e,m,e) # Spell the word you want here 
print '\n'.join(' '.join(line) for line in lines) 

给出输出:

_______ _______ _______ _______ 
(  ) ( ____ \ (  ) ( ____ \ 
|()() | | ( \/ |()() | | ( \/ 
| || || | | (__  | || || | | (__  
| |(_)| | | __)  | |(_)| | | __)  
| | | | | (  | | | | | (  
|) (| | (____/\ |) (| | (____/\ 
|/  \| (_______/ |/  \| (_______/