2016-09-06 8 views
2

私はリストのリストを持っている:テーブルにリストのリストを変換

apples  Alice dogs 
oranges  Bob cats 
cherries Carol moose 
banana  David goose 

私のためのトリックは、「ラインを持っている:私はこのテーブルに変換する必要があり

tableData = [['apples', 'oranges', 'cherries', 'banana'], 
      ['Alice', 'Bob', 'Carol', 'David'], 
      ['dogs', 'cats', 'moose', 'goose']] 

「列に変換する(すなわちリンゴ、オレンジ、チェリー、同じ列の下バナナ)

私は別のオプション(A)を試してみました:

for row in tableData: 
     output = [row[0].ljust(20)] 
      for col in row[1:]: 
      output.append(col.rjust(10)) 
      print(' '.join(output)) 

オプション(B):

方法2

for i in tableData: 
    print(i[0].ljust(10)+(str(i[1].ljust(15)))+(str(i[2].ljust(15)))+ 
    (str(i[3].ljust(15))))  

どれも問題に対処するようです。
ご意見ありがとうございます。

+0

これはPy2かPy3ですか? 'print'は1つずつ異なります。そして、あなたのサンプルコードがそれを使用する方法は、それを明確にするための違いを行使しません。 – ShadowRanger

+0

また、[Python:表形式のデータとしてリストを印刷する](0120-17753-03) – poke

+0

これはPython 3.5 –

答えて

1

"フリップ" する最も簡単な方法は、ネストされたリストは、zipを使用することです:

for fruit, name, animal in zip(*tableData): 
    print(fruit.ljust(10), name.ljust(10), animal.ljust(10)) 

この版画:zip:すでにこのための組み込み関数があり

apples  Alice  dogs 
oranges Bob  cats 
cherries Carol  moose 
banana  David  goose 
+0

素晴らしいです!ありがとうございました –

0

zip(* [['apples', 'oranges', 'cherries', 'banana'], 
     ['Alice', 'Bob', 'Carol', 'David'], 
     ['dogs', 'cats', 'moose', 'goose']]) 
5

テーブルを転置するには、zip-and-splatを使用します。

>>> for row in zip(*tableData): 
...  print '{:<10}{:>7} {:<10}'.format(*row) 
...  
apples  Alice dogs  
oranges  Bob cats  
cherries Carol moose  
banana  David goose 
+0

最終的な項目の明示的なフィールド幅は必要ありません。なぜなら、左寄せされていて、それが幅を超えていれば流出するからです。それ以外の場合は、ええ、最高の答え。 – ShadowRanger

+0

ありがとうございます。これらの#が正確に何を表しているのですか –

+1

あなたはリンクに従っていますか?数字は、コンテンツのために予約されているスペースであり、左または右に追加する必要のある空間の数が左右揃えで分かるようになっています。 – Matthias

1

1つはまたpandas.DataFrameで遊ぶことができます::

In [22]: import pandas as pd 
In [22]: pd.DataFrame(tableData).T # .T means transpose the dataframe 
Out[22]: 
      0  1  2 
0 apples Alice dogs 
1 oranges Bob cats 
2 cherries Carol moose 
3 banana David goose 

をすることによって、それらの迷惑番号を削除し、右、左、または-正当化するために、細胞を、format spec languageを使用

列とインデックスを空白に設定する:

In [27]: l1, l2 = len(tableData), len(tableData[0]) 

In [28]: pd.DataFrame(tableData, index=['']*l1, columns=['']*l2).T 
Out[28]: 

    apples Alice dogs 
    oranges Bob cats 
    cherries Carol moose 
    banana David goose 
+0

downvotingではなく、簡単な問題のために 'pandas'を抜き取ってしまえば、それをやりすぎるかもしれないと思います。 :-) – ShadowRanger

+0

@ShadowRanger私はそれを考慮しましたが、2度目の考えでは、質問者が検討する価値のあるツールだと思っています。 –

関連する問題