2016-03-18 5 views
0

モジュールをインポートせずにこれを行う簡単な方法があることがわかりますが、見つけられません。形式のリストはその中の項目の数に応じて

私のリストにいくつのアイテムがあっても、同じフォーマットを維持したいと考えています。だから、私のリスト内のすべてのアイテムに対して、別の{:^ 3}が追加されます。

list = [1, 2, 3, 4, 5] 

print("| {:^3}{:^3}{:^3}{:^3}{:^3}\n".format(*list)) 

これを行う最も簡単な方法は何ですか?

+0

' "| "+""({:^ 3}リストに_のために ").format参加。" (* list) '多分? – Pythonista

答えて

3

これを行う最も簡単な方法は、"".join関数をリスト内包とともに使用することです。リスト内包は、配列内の各項目に対して何かを行い、配列の文字列表現を取得します。

>>> print("| " + "".join(["{:^3}".format(x) for x in list]) + "\n") 
| 1 2 3 4 5 

これはx現在のアイテムであるlist内のすべての項目に"{:^3}".format(x)を適用します。その後、例えば、区切り文字なしで文字列としてリスト項目を取得するには、この上の"".joinを使用しています。

>>> "".join(["1", "2", "3"]) 
'123' 

もう一つのノート:組み込み関数であるlistlistので、あなたはという変数を使用すべきではありませんPythonで。 Pythonで

+0

あなたの例は間違っています。あなたは文字列以外には参加できません。 .join([1、2、3]) 'を実行すると、' TypeError:シーケンスアイテム0:期待される文字列、intが見つかりました ' – zondo

+0

@zondoそれが修正されました。ありがとう。 –

+0

'.join()'を使うとき、リストの理解はジェネレータよりも効率的です。 – zondo

0

join機能は、特にこのようなことのために非常に便利です:

("| "+"".join(["{:^3}" for _ in list]) + "\n").format(*list)

関連する問題