Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで指定したリストをネストされたリスト(リストのリスト)に変換する方法

Pythonでは、リスト内の各要素を、それ自体がリストである形式へと変換したいケースがあります。つまり、要素そのものがリストになっている「ネストされたリスト(リストのリスト)」を作成するということです。

本記事では、代表的な2つのアプローチ——反復処理を使う方法astモジュールを使う方法——について、具体的なコード例とともに解説します。

反復処理(イテレーション)を使う方法

最も基本的なアプローチは、リストの各要素を1つずつ取り出し、それぞれをリスト形式に変換していく方法です。一時的なリスト(temp)を活用しながら変換を行い、最終的にすべての要素をまとめて、目的となる「リストのリスト」を生成します。

コード例

listA = ['Mon','Tue','Wed','Thu','Fri']

print("Given list:\n",listA)
new_list = []

# リストのリスト形式を作成
for elem in listA:
    temp = elem.split(', ')
    new_list.append((temp))

# 最終的なリスト
res = []

for elem in new_list:
    temp = []
    for e in elem:
        temp.append(e)
    res.append(temp)

# 結果の出力
print("The list of lists:\n",res)

実行結果

上記のコードを実行すると、次のような出力が得られます。

Given list:
    ['Mon', 'Tue', 'Wed', 'Thu', 'Fri']
The list of lists:
    [['Mon'], ['Tue'], ['Wed'], ['Thu'], ['Fri']]

このように、元のリストの各文字列要素が、それぞれ単一要素を持つリストへと変換され、ネストされた構造になっていることが確認できます。

astモジュールを使う方法

もうひとつの方法として、Python標準ライブラリのast(Abstract Syntax Trees:抽象構文木)モジュールを利用する手法があります。このモジュールには literal_eval という関数が用意されており、文字列として表現されたリストの要素を安全に評価し、そのまま新しいリストへと変換することができます。

コード例

import ast
listA = ['"Mon","Tue"','"Wed","Thu","Fri"']
print("Given list: \n", listA)
res = [list(ast.literal_eval(x)) for x in listA]

# 新しいリスト
print("The list of lists:\n",res)

実行結果

上記のコードを実行すると、次のような出力が得られます。

Given list:
    ['"Mon","Tue"', '"Wed","Thu","Fri"']
The list of lists:
    [['Mon', 'Tue'], ['Wed', 'Thu', 'Fri']]

この例では、カンマ区切りの文字列が含まれる各要素が literal_eval によって評価され、複数の要素を持つリストへと変換されています。このように ast.literal_eval を使えば、文字列形式のデータを安全かつ簡潔にリスト化できるのが大きなメリットです。

まとめ

  • 反復処理による方法: 各要素を個別にリストへ変換する、直感的で汎用性の高い手法です。
  • ast.literal_eval を使う方法: 文字列として格納されたリスト構造を安全に評価・変換でき、コードも簡潔になります。

用途やデータの形式に応じて、これらの方法を使い分けることで、効率的にネストされたリストを作成できます。

  1. Pythonで文字のリストを文字列に変換する方法を解説

    Pythonでは、リスト内の個々の要素をひとつの文字列にまとめたい場面がよくあります。たとえば、データを保存したり送信したりする際に必要となるシリアライズ(直列化)の処理では、このような変換が非常に役立ちます。具体的には、次のような変換を指します。[h, e, l, l, o, , w, o, r, l, d] → hello worldjoinメソッドを使った変換Pythonには、このような変換を実現するためのjoin()メソッドが標準で用意されています。joinメソッドは、区切り文字(デリミタ)として使う文字列に対して呼び出し、引数に渡したリストの各要素を連結します。今回は各文字をつなげ

  2. Pythonでリストをタプルに変換する方法

    Pythonでは、リストをタプルに変換するのは非常に簡単です。組み込み関数である tuple() 関数にリストを引数として渡すだけで、変換することができます。サンプルコードmy_list = [1, 2, 3] my_tuple = tuple(my_list) print(my_tuple)出力結果上記のコードを実行すると、以下のような出力が得られます。(1, 2, 3)解説tuple() 関数は、リストだけでなく文字列や辞書などのイテラブル(反復可能なオブジェクト)もタプルに変換できます。タプルはリストと異なりイミュータブル(変更不可)であるため、データを誤って書き換えたくない場合や、辞書