カンマで区切られた項目のリストを出力するコードを書いています。リストはforループで生成されます。私は
for x in range(5):
print(x, end=",")
問題は、リストの最後のエントリで追加された最後のコンマを削除する方法がわからないことです。これを出力します:
0,1,2,3,4,
末尾の '、'を削除するにはどうすればよいですか?
sep=","
_を引数としてprint()
に渡します印刷ステートメントはもうすぐそこにあります。
ループは必要ありません。 print にはsep
パラメータとend
があります。
_>>> print(*range(5), sep=", ")
0, 1, 2, 3, 4
_
print
ビルトインは、出力される引数として任意の数の項目を取ります。キーワード以外の引数は、sep
で区切られて出力されます。 sep
のデフォルト値は単一のスペースです。
_>>> print("hello", "world")
hello world
_
sep
を変更すると、期待どおりの結果が得られます。
_>>> print("hello", "world", sep=" cruel ")
hello cruel world
_
各引数は、str()
と同様に文字列化されます。 iterableをprintステートメントに渡すと、iterableが1つの引数として文字列化されます。
_>>> print(["hello", "world"], sep=" cruel ")
['hello', 'world']
_
ただし、反復可能オブジェクトの前にアスタリスクを付けると、アスタリスクが個別の引数に分解され、sep
の使用目的が可能になります。
_>>> print(*["hello", "world"], sep=" cruel ")
hello cruel world
>>> print(*range(5), sep="---")
0---1---2---3---4
_
join
を使用する特定のセパレータを使用してイテラブルを文字列に結合する別の方法は、セパレータ文字列のjoin
メソッドを使用することです。
_>>>print(" cruel ".join(["hello", "world"]))
hello cruel world
_
文字列以外の要素を明示的に文字列に変換する必要があるため、これは少し扱いにくいです。
_>>>print(",".join([str(i) for i in range(5)]))
0,1,2,3,4
_
あなたが提案するアプローチは、途中でコンマを追加して文字列を連結するためにループが使用されるアプローチです。もちろん、これは正しい結果を生成しますが、はるかに困難な作業です。
_>>>iterable = range(5)
>>>result = ""
>>>for item, i in enumerate(iterable):
>>> result = result + str(item)
>>> if i > len(iterable) - 1:
>>> result = result + ","
>>>print(result)
0,1,2,3,4
_
str.join()
を使用して、印刷する文字列を作成してから印刷できます。例-
print(','.join([str(x) for x in range(5)]))
デモ -
>>> print(','.join([str(x) for x in range(5)]))
0,1,2,3,4
str.join
とともに使用すると、ジェネレータ式よりも高速であるため、上記のリスト内包表記を使用しています。
これを行うには、 str.join()
を使用できます。
_In [1]: print ','.join(map(str,range(5)))
0,1,2,3,4
_
range(5)
を呼び出すには、最初にstr.join()
の数値を文字列に変換する必要があります。 map()
操作を使用してこれを行います。次に、map()
から取得した文字列のリストをカンマ_,
_で結合します。
元のコードに近い、使用できる別のフォーム:
opt_comma="" # no comma on first print
for x in range(5):
print (opt_comma,x,sep="",end="") # we are manually handling sep and end
opt_comma="," # use comma for prints after the first one
print() # force new line
もちろん、あなたのプログラムの意図は、おそらくこのスレッドの他のより多くのPythonicの答えによってよりよく提供されます。それでも、状況によっては、これは便利な方法である可能性があります。