2017-03-16 76 views
1

我想創建一個函數,輸出一個矩陣,其中包含列表中的每個項目在一個單獨的行與中間的行。我得到的唯一結果是報價('')。我不懂爲什麼。我認爲我把它全部正確地設置以輸出需要的東西,但是必須缺少一些東西?Python中輸出錯誤?

我在我的代碼下面包含了一些例子。

def show_table(table): 
table=[] 
s=[[str(e) for e in row] for row in table] 
lens= [max(map(len, col)) for col in zip(*s)] 
fmt= '\t'.join('{{:{}}}'.format(x) for x in lens) 
table= [fmt.format(*row) for row in s] 
return '\n'.join(table) 

show_table([['A','BB'],['C','DD']]) 

輸出:

「| A | BB | \ n | C | DD | \ N」

打印(show_table([[ 'A', 'B-B'],[ 'C', 'D-D']])) 輸出:

| A | BB | | C | DD |

回答

0

問題出在您將列表初始化爲空列表的第二行。相反,嘗試:

if table is None: 
    table = [] 

也許一個更好的方式來做到這一點可能是:

def show_table(table): 
    if table is None: 
     table = [] 
    data = "" 
    for row in table: 
     for val in row: 
      data += "| " + val + " " 
     data += "|\n" 
    return data.strip("\n") 

print show_table([['a','bb'],['c','dd']]) 

輸出:

| a | bb | 
| c | dd | 
+0

我怎麼會把之間的界限?您的解決方案確實解決了輸出問題! –

+0

我已經更新了答案,但我不確定你想要完成什麼,我希望這給你一個大致的想法來建立。 –

+0

我需要在兩側放置一條線,其間的空格| a | bb | –