2017-03-16 4 views
1

私は、リスト内の各項目を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']]) 

出力:

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

プリント(show_table([ 'A'、 'BB']、[ 'C'、 'DD']])) 出力:

| | BB | | C | DD |

答えて

0

問題は、リストを空のリストに初期化する2行目にあります。代わりにしてみてください:

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

私はその出力を両側に1行、中間にスペースを入れる必要があります。 | bb | –

関連する問題