Pythonのjoinリストは、指定された区切り文字で文字列のリストを連結して文字列を形成することを意味します。リストを文字列に変換する必要がある場合に便利です。たとえば、アルファベットのリストをコンマ区切りの文字列に変換してファイルに保存する場合などに使用できます。
Pythonのjoinリスト
私たちはPythonの文字列のjoin()関数を使用して、文字列のリストを結合することができます。この関数はiterable
を引数として受け取ります。そして、リストはiterableなので、リストと一緒に使用することができます。また、リストは文字列を含んでいる必要があります。もしリストの中に整数が含まれている場合、TypeError: sequence item 0: expected str instance, int found
というエラーメッセージが表示されます。Pythonでリストを結合して文字列を作成するための短い例を見てみましょう。
vowels = ["a", "e", "i", "o", "u"]
vowelsCSV = ",".join(vowels)
print("Vowels are = ", vowelsCSV)
上記のプログラムを実行すると、以下の出力が生成されます。
Vowels are = a,e,i,o,u
Pythonで2つの文字列を結合する
join()関数を使用して2つの文字列を結合することもできます。
message = "Hello ".join("World")
print(message) #prints 'Hello World'
なぜjoin()関数はStringにあるのでしょうか、Listにないのはなぜでしょうか?
Pythonの多くの開発者が抱く疑問の一つは、なぜjoin()関数がStringに含まれているのか、Listに含まれていないのかということです。以下の構文の方が覚えやすく使いやすいのではないでしょうか?
vowelsCSV = vowels.join(",")
この件に関しては、StackOverflowの質問があり、そこでの議論から重要なポイントをまとめます。
主な理由は、join()関数はどんなイテラブルにも使え、結果は常にStringであるため、この関数をStringのAPIに含めることが合理的だからです。全てのイテラブルクラスに同じ関数を持たせるよりも、Stringに含める方が適切です。
複数のデータ型を持つリストの結合
複数のデータ型を持つリストの要素を結合するプログラムを見てみましょう。
names = ['Java', 'Python', 1]
delimiter = ','
single_str = delimiter.join(names)
print('String: {0}'.format(single_str))
プログラムの出力を見てみましょう: これは、複数のデータ型を含むリストを
join()
関数で単一の文字列に結合することはできないというデモンストレーションでした。。 リストは文字列の値のみを含む必要があります。
join関数を使用して文字列を分割する
指定された区切り文字で文字列を分割するために、join()
関数を使用することもできます。
names = 'Python'
delimiter = ','
single_str = delimiter.join(names)
print('String: {0}'.format(single_str))
これは、文字列がjoin()関数に引数として渡された場合、文字と指定された区切り文字で分割されることを示しています。
split()関数の使用
join()
関数と同様に、文字列を分割するためにsplit()
関数も使用できます。次のコードスニペットを見てみましょう:
names = ['Java', 'Python', 'Go']
delimiter = ','
single_str = delimiter.join(names)
print('String: {0}'.format(single_str))
split = single_str.split(delimiter)
print('List: {0}'.format(split))
プログラムの出力を見てみましょう: 同じ区切り文字を使用して、文字列を元のリストに戻します。
n回だけ分割する
前の例で示したsplit()
関数は、オプションの2番目の引数も取ります。この引数は、分割操作が実行される回数を示します。以下はその使用例です:
names = ['Java', 'Python', 'Go']
delimiter = ','
single_str = delimiter.join(names)
print('String: {0}'.format(single_str))
split = single_str.split(delimiter, 1)
print('List: {0}'.format(split))
このプログラムの出力を見てみましょう:今回は、
split()
関数のパラメータとして指定した回数だけ分割操作が行われました。これで、Pythonでリストを文字列に結合し、split()
関数を使用して元のリストを取得する方法についての説明は終わりです。
Source:
https://www.digitalocean.com/community/tutorials/python-join-list