按特定方向打印嵌套列表- Python



我正在尝试一个问题,使图形设计在Python中,更具体地说ASCII"横幅"字。每个字母由嵌套的字符行列表组成。

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

等。

当打印每个嵌套列表和整个列表时,它们组成一个单词。正如我上面所说的,我在打印它时遇到了麻烦,每个嵌套列表和整个事情。提前感谢!

如果你想从左到右打印字母,你将不得不将列表的列表本身zip,有效地"转置"它。这样,第一个列表将包含所有的第一行,第二个列表包含所有的第二行,以此类推。现在只要join,你就完成了。

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

如果你想从上到下打印字母,你可以这样:

>>> print 'nn'.join(('n'.join(line) for line in ascii))

虽然不完全清楚您想要的输出,但我相信您可以从使用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)

给输出:

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

最新更新