データには様々な形がありますが、最も一般的なデータ構造の1つがリスト/配列です。文字列は、基本的に英数字の列です。この2つのデータ構造は似ていて、よく変換されます。
このガイドでは、文字列の変換方法について説明します。
このガイドでは、Pythonでリストを文字列に変換/収集する方法について説明します。
>
>
>
Pythonでjoin()を使ってリストを文字列に変換する
一般的な方法としては join()
関数を使用します。この関数はセパレータを表す文字列に対して呼び出され、このセパレータがすべての結合されたアイテムの間に追加されます。
注意: セパレータを前もって定義しておくこともできますが、通常は空の文字列を指定して join()
関数を呼び出すだけです。
それでは、結合したい文字のリストを見てみましょう。
base_list = ['M', 'K', 'V', 'N', 'L', 'I', 'L', 'F', 'S', 'L', 'L', 'V']
これらをひとつの文字列に結合する最も簡単な方法は、単に join()
関数にリストを渡すことです。
string = "".join(base_list)
print(string)
この結果は次のようになります。
MKVNLILFSLLV
大腸菌のタンパク質の配列の最初にあるアミノ酸を示すいくつかの文字を結合しました。
これらの要素はそれぞれ str
型なので、これらを自然に文字列にすることに問題はありません。しかし、時には、ある要素を別の型に変換したい場合もあるかもしれません。
さらに、別のデリミタを使えば、別の表現も可能です。
string = ", ".join(base_list)
という結果になります。
M, K, V, N, L, I, L, F, S, L, L, V
Pythonでリストを文字列に変換する(リスト理解機能付き
注:Pythonは暗黙的に変換できるデータ型はすべて変換するので、ほとんどの場合、明示的に変換する必要はありません。
もし要素を変換する必要がある場合は、単純にリスト内包を使えばよいでしょう。
string = "".join(str(element) for element in base_list)
リストの各要素は str()
関数に渡され、文字列に変換されます。この関数は、カスタム関数も含めて他の関数で置き換えることができます。例えばc、ある要素が大文字でない場合に、各要素を大文字にする関数を作ってみましょう。
base_list = ['m', 'K', 'V', 'N', 'L', 'I', 'L', 'f', 'S', 'L', 'L', 'V']
def capitalize_char(char):
return char.upper()
string = "".join(capitalize_char(element) for element in base_list)
print(string)
mと
fは小文字に反転していますが、これは起こってはならないことです。リスト内包に
capitalize_char()` 関数を渡して、渡された各要素の大文字化されたものを返しています。この結果
MKVNLILFSLLV
Pythonでmap()を使ってリストを文字列に変換する。
最後に、よりクリーンで簡単に関数を介して要素を渡す方法として、 map()
を使用することができます。一般に、map()
関数は、あるコレクションの値を別のコレクションにマッピングするために使われます。
例えば、各文字を別のブール値のリストにマップして、各ブール値がその文字が大文字かどうかを表すようにすることができます。
もちろん、map()
関数を使って1対1のマッピングをすることもできますし、文字列を文字列にマッピングして、それらを1つのものに結合することもできます。
base_list = ['M', 'K', 'V', 'N', 'L', 'I', 'L', 'F', 'S', 'L', 'L', 'V']
string = "".join(map(str, base_list))
print(string)
この結果、次のようになります。
MKVNLILFSLLV
>
> Pythonのマッピングについてもっと知りたい方は、 Pythonのmap()、filter()、reduce()ガイドをご覧ください! > Pythonのmap()、filter()、reduce()ガイドをご覧ください。
>
>
>
結論
この短いガイドでは、Pythonでリストを文字列に変換し、要素を1つに集める方法を見てきました。
文字列は本質的に文字のリストであり、ほとんど同じように振る舞いますが、同様に個々の要素として扱うことができます。
join()関数をそのまま使う方法と、リスト内包やカスタムメソッド、
map()` 関数と組み合わせて使う方法を学びました!