.format()
で物事を印刷するためのまったく新しいPython規則)がとても好きです
それを使用して要素を1行ずつ印刷することは可能ですか?もちろん、要素の数は不明です。
実例をいただければ幸いです。
文字列フォーマッタは、複数行の文字列を含む、実際にはあらゆる種類の文字列で使用できます。したがって、もちろん、フォーマット文字列'{}\n{}\n{}'
がある場合は、3つのアイテムを渡すことができ、それらはすべて別々の行に配置されます。
したがって、印刷する要素の数が動的である場合、必要なのは、フォーマット文字列に同じ数のフォーマット項目が含まれていることを確認することだけです。これを解決する1つの方法は、フォーマット文字列を動的に作成することです。例:これ:
'\n'.join('{}' for _ in range(len(myList))).format(*myList)
したがって、基本的に最初にフォーマット文字列を作成します。ジェネレータにmyList
の要素ごとに1つのフォーマットアイテム{}
を生成させ、改行文字を使用してこれらを結合します。したがって、結果の文字列は次のようになります:{}\n{}\n…\n{}\n{}
。
次に、その文字列をフォーマット文字列として使用し、その文字列でformat
を呼び出して、解凍されたリストを引数として渡します。したがって、フォーマット文字列のすべてのスポットを正しく埋めています。
だから、あなたはできますそれをします。ただし、これは実際には実用的なアイデアではありません。それはかなり混乱しているように見え、あなたの意図をうまく伝えていません。より良い方法は、リストの各アイテムを個別に処理し、個別にフォーマットして、thenのみを結合することです。
'\n'.join('{}'.format(item) for item in myList)
要素を1行ずつ印刷する場合は、もちろん、改行を含む1つの長い文字列を作成する必要がない、より明白な方法は、アイテムをループして1つずつ印刷することです。
for item in myList:
print(item)
# or use string formatting for the item here
print('{}'.format(item))
そしてもちろん、fourtheyeが示唆したように、各ループの反復が非常に単純な場合は、リスト全体をprint関数に渡し、sep='\n'
を設定して要素をそれぞれ別々の行に印刷することもできます。
Python 3.xを使用していて、要素のリストを各行に1つずつ出力するだけの場合は、 print
を使用できます。 =関数自体、このように
my_list = [1, 2, 3, 4]
print(*my_list, sep="\n")
*my_list
は単にリスト要素を解凍し、それぞれをパラメーターとしてprint
関数に渡します(はい、print
はPython 3.x )。
出力
1
2
3
4
Python 2.xを使用している場合は、次のように将来から印刷関数をインポートできます。
from __future__ import print_function
注:このインポートはファイルの最初の行である必要があります。
複雑にしないでおく
>>> myList = [2,3,5,6,5,4,3,2]
>>> for elem in myList:
'{}'.format(elem)
与える
'2'
'3'
'5'
'6'
'5'
'4'
'3'
'2'
入手したいものですか?
print('\n'.join(a_list))
のような意味ですか?文字列のフォーマットはおそらく'\n'.join(a_list)
と同様のことを行う可能性がありますが、ここでは必要ないようです。 (更新を参照)
事は、.format
はまったく印刷しません。それがprint
の目的です。 format
はデータを取得し、文字列を返します。 print
は、その文字列を端末/標準出力に出力する1つの方法ですが、print
および.format
実際には何の関係もありません。
文字列のフォーマットについて私が言ったことを取り戻します。フォーマットパターン自体は、format
メソッドの arity を事前定義しているため、フォーマットパターンを動的に構築する以外に、これにformat
を使用することはできません。
これを行う別の方法は、文字列の乗算を使用することです。
list = [1, 2, 3, 4, 5]
print( ( '{}\n' * len(list) ).format( *list ) )
普通の古い印刷の場合は、printコマンドのsepオプションを使用します。 pythonロギング機能(sep引数がない)を使用している場合は、formatメソッドの方が便利です。
join
を使用して、1行ずつ印刷できます。
>>> x = ['a','b','c']
>>> print("\n".join(x))
a
b
c