Pythonで文字列のリストを個々の文字のリストに変換する3つの方法
リストを扱っていると、文字列を処理してその中の個々の文字を取り出し、さらに別の処理を行いたい場面に出会うことがあります。例えば、['Mon', 'd', 'ay'] のような文字列のリストを ['M', 'o', 'n', 'd', 'a', 'y'] のように1文字ずつに分解したいケースです。この記事では、Pythonでこれを実現する代表的な3つの方法を、サンプルコードと実行結果とともに解説します。
方法1: リスト内包表記を使う
最もシンプルでPythonらしい方法は、リスト内包表記を使うことです。外側のforループでリストの各要素(文字列)を順に取り出し、内側のループでその文字列から1文字ずつ取得します。
サンプルコード
listA = ['Mon','d','ay']
# 元のリスト
print("Given list : \n", listA)
# 各文字を取得
res = [i for ele in listA for i in ele]
# 結果
print("List of characters: \n",res)実行結果
上記のコードを実行すると、次のような結果が得られます。
Given list : ['Mon', 'd', 'ay'] List of characters: ['M', 'o', 'n', 'd', 'a', 'y']
方法2: itertools.chainを使う
Python標準ライブラリの itertools モジュールには、複数のイテラブルを連結する chain 関数が用意されています。chain.from_iterable() を使えば、リスト内の各文字列から1文字ずつ取り出し、それらをまとめて新しいリストに格納できます。大きなデータを扱う場合にも効率的な方法です。
サンプルコード
from itertools import chain
listA = ['Mon','d','ay']
# 元のリスト
print("Given list : \n", listA)
# 各文字を取得
res = list(chain.from_iterable(listA))
# 結果
print("List of characters: \n",res)実行結果
上記のコードを実行すると、次のような結果が得られます。
Given list : ['Mon', 'd', 'ay'] List of characters: ['M', 'o', 'n', 'd', 'a', 'y']
方法3: joinメソッドとlist関数を組み合わせる
join メソッドを使ってリスト内のすべての文字列を1つの文字列に結合し、その結果に対して list 関数を適用すると、各文字が個別の要素として格納されたリストを作成できます。コードが非常に短く、直感的に理解しやすいのが特徴です。
サンプルコード
listA = ['Mon','d','ay']
# 元のリスト
print("Given list : \n", listA)
# 連結して文字のリストに変換
res = list(''.join(listA))
# 結果
print("List of characters: \n",res)実行結果
上記のコードを実行すると、次のような結果が得られます。
Given list : ['Mon', 'd', 'ay'] List of characters: ['M', 'o', 'n', 'd', 'a', 'y']
まとめ
文字列のリストを個々の文字のリストに変換する方法として、以下の3つを紹介しました。
- リスト内包表記: 追加のインポートが不要で、可読性も高い万能な方法
- itertools.chain: 大量のデータを扱う際にメモリ効率の良い方法
- join + list関数: 最短のコードで書けるシンプルな方法
どの方法でも同じ結果が得られるので、コードの目的や規模に応じて使い分けるとよいでしょう。
-
Pythonで文字列のリストをリストのリスト(ネストしたリスト)に変換する方法
この記事では、文字列型のデータを含むリストから、リストのリスト(入れ子構造のリスト)を作成する方法を解説します。元のリストには、リスト形式の文字列が要素として格納されており、それらを個々の要素に分解して、真のリスト構造へと変換していきます。strip()とsplit()を使う方法まず紹介するのは、strip()とsplit()の2つのメソッドを組み合わせる方法です。strip()で各文字列から不要な角括弧「[ ]」を取り除き、その後split()を使ってカンマ区切りで要素を分割することで、リストのリストを生成できます。コード例list1 = [ [0, 1, 2, 3],[Mon, Tue,
-
Pythonで文字のリストを文字列に変換する方法を解説
Pythonでは、リスト内の個々の要素をひとつの文字列にまとめたい場面がよくあります。たとえば、データを保存したり送信したりする際に必要となるシリアライズ(直列化)の処理では、このような変換が非常に役立ちます。具体的には、次のような変換を指します。[h, e, l, l, o, , w, o, r, l, d] → hello worldjoinメソッドを使った変換Pythonには、このような変換を実現するためのjoin()メソッドが標準で用意されています。joinメソッドは、区切り文字(デリミタ)として使う文字列に対して呼び出し、引数に渡したリストの各要素を連結します。今回は各文字をつなげ