Pythonのリストを結合
Pythonのjoinリストとは、指定された区切り文字で文字列のリストを結合して文字列を作成することを意味します。リストを文字列に変換する必要がある場合に便利です。例えば、アルファベットのリストをコンマで区切られた文字列に変換してファイルに保存する際に役立ちます。
Pythonのリストを結合する
私たちは、Pythonの文字列のjoin()関数を使用して、文字列のリストを結合することができます。この関数は、イテラブルを引数として受け取り、リストはイテラブルなので、リストと一緒に使用することができます。また、リストは文字列を含んでいる必要があります。もし整数のリストを結合しようとすると、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にはないのですか?(Naze join() kansu wa String ni ari, List ni wa nai no desu ka?)
多くのPython開発者には、join()関数が文字列の一部であり、リストではないのはなぜかという疑問が生じます。以下の構文の方が覚えやすく使いやすいのではないでしょうか?
vowelsCSV = vowels.join(",")
これに関しては、人気のあるStackOverflowの質問があります。ここでは、私が全く納得できるディスカッションの中で最も重要なポイントをリストアップしています。
主な理由は、join() 関数がどんなイテラブルとも使えること、そして結果が常に文字列であるため、この関数を文字列の API に持っていることが意味があるため、全てのイテラブルクラスに持っているよりも、文字列の API にある方が良いからです。
複数のデータ型のリストに参加する
複数のデータ型を持つリストのアイテムを結合するプログラムを見てみましょう。
names = ['Java', 'Python', 1]
delimiter = ','
single_str = delimiter.join(names)
print('String: {0}'.format(single_str))
join関数を使用して文字列を分割します。
指定されたデリミタで文字列を分割するために、join() 関数を使用することもできます。
names = 'Python'
delimiter = ','
single_str = delimiter.join(names)
print('String: {0}'.format(single_str))
split()関数を使用する
join()関数を使って分割する以外にも、split()関数を使ってStringを分割することもできます。これはjoin()関数とほぼ同じ方法で動作します。以下はコードの一部です。
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つ目のオプション引数も受け入れます。これは、split操作を実行する回数を示すものです。以下はその使用例を示したサンプルプログラムです。
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))