簡體   English   中英

如何打印2D列表,以便每個列表都在換行符上帶有空格,沒有任何“”或[]

[英]How to print a 2D list so that each list is on a new line with a space, without any “” or []

我在以美觀的方式打印列表時遇到麻煩。 列表的一個示例是

[["-", "-", "-", "-"],["-", "-", "-", "-"],["-", "-", "-", "-"]] 

(字符不一定全部相同),但是我需要打印它而不使用除了printrangeleninsertappendpop之外的任何函數,並且我不能使用任何詞典或地圖,也不能導入任何庫或使用任何列表理解。 我又要:

- - - -
- - - - 
- - - - 

我試過了:

def print_board(board): 
    for i in board: 
        row = board[i] 
        for r in row: 
            print(*row[r], "\n")

您接近了,但您誤解了for i in <list>工作方式。 迭代變量獲取列表元素,而不是其索引。

另外, row[r] (如果r是索引)將只是一個字符串,而不是列表,因此您無需使用*row[r]對其進行解包。

無需在print()調用中包含"\\n" ,因為默認情況下,它以換行符結束輸出-您必須使用end=""選項覆蓋該輸出,以防止出現這種情況。

for row in board:
    for col in row:
        print(col, end=" ") # print each element separated by space
    print() # Add newline
board = [["-", "-", "-", "-"],["-", "-", "-", "-"],["-", "-", "-", "-"]] 

for row in board:
    print(*row)

這是最簡單的方法,但是依賴於參數解壓縮( row之前加* )。 如果由於某種原因不能使用它,則可以使用關鍵字參數進行print以達到相同的結果

for row in board:
    for cell in row:
        print(cell, end=' ')
    print()

使用更好的命名變量可以更好地理解:

def print_board(board): 
    for innerList in board: 
        for elem in innerList: 
            print(elem + " ", end ='') # no \n after print
        print("") # now \n


b = [["-"]*4]*4       
print_board(b)
print(b)

輸出:

- - - -  
- - - -  
- - - -  
- - - -  

[['-', '-', '-', '-'], ['-', '-', '-', '-'], ['-', '-', '-', '-'], ['-', '-', '-', '-']]

暫無
暫無

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

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