簡體   English   中英

在某些方向打印嵌套列表 - Python

[英]Printing nested lists in certain directions - Python

我正在嘗試用Python制作圖形設計的問題,更具體地說是ASCII“橫幅”字。 每個字母由字符的嵌套列表組成。

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

等等

當為每個嵌套列表向下打印並為整個事物打印時,它們會形成一個單詞。 我正如上面所說的那樣打印它時遇到問題,對於每個嵌套列表都是如此。 提前致謝!

如果你想從左到右打印字母,你必須自己zip列表列表,有效地“轉置”它。 這樣,第一個列表將包含所有第一行,第二個列表包含所有第二行,依此類推。 現在join這些,你就完成了。

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

如果你想從上到下打印字母,你可以使用:

>>> print '\n\n'.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)

給出輸出:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM