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

Pythonでリストのリストを列ごとの個別要素に変換する方法

Pythonでデータ分析やデータ処理を行っていると、与えられたリストを整形(リシェイプ)して、異なる列構造を持つリストを作り直す必要がある場面に遭遇します。本記事では、リストのリストを列単位で個別の要素に変換するための複数のアプローチを、サンプルコード付きでわかりやすく解説します。

方法1:スライシングを使う

リストを任意の位置でスライスすることで、列状の構造を作り出せます。ここでは、元のリストを中央で分割した新しいリストへと変換します。処理には2つのforループを使用し、外側のループで各サブリストの先頭(0番目)から2番目の要素までを、内側のループで2番目以降から末尾までの要素を扱います。

サンプルコード

x = [[5,10,15,20],[25,30,35,40],[45,50,55,60]]
# リストスライシングとリスト内包表記を使用
print ("The Given input is : \n" + str(x))
result = [m for y in [[n[2: ], [n[0:2]]] for n in x] for m in y]
print ("Converting column to separate elements in list of lists : \n" + str(result))

実行結果

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

The Given input is :
[[5, 10, 15, 20], [25, 30, 35, 40], [45, 50, 55, 60]]
Converting column to separate elements in list of lists :
[[15, 20], [[5, 10]], [35, 40], [[25, 30]], [55, 60], [[45, 50]]]

出力を見ると、元の各行が「後半2つの要素」と「前半2つの要素」に分割され、新しいリストとして並んでいることが確認できます。

方法2:itertools.chain() とリスト内包表記を使う

2つのforループを使う代わりに、標準ライブラリitertoolsが提供するchainメソッドを利用する方法もあります。リスト内包表記で上記と同じロジックを適用しつつ、chain()でネストされた構造を平坦化することで、より簡潔なコードで同じ結果を得られます。

サンプルコード

from itertools import chain
x = [[5,10,15,20],[25,30,35,40],[45,50,55,60]]
# リストスライシングとリスト内包表記を使用
print ("The Given input is : \n" + str(x))
res = list(chain(*[list((n[2: ], [n[0:2]]))
    for n in x]))
print ("Converting column to separate elements in list of lists : \n" + str(res))

実行結果

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

The Given input is :
[[5, 10, 15, 20], [25, 30, 35, 40], [45, 50, 55, 60]]
Converting column to separate elements in list of lists :
[[15, 20], [[5, 10]], [35, 40], [[25, 30]], [55, 60], [[45, 50]]]

まとめ

どちらの方法も、スライシングとリスト内包表記を組み合わせることで、リストのリストを列単位に分割できます。手軽に書きたい場合は「スライシング+内包表記」、可読性や拡張性を重視する場合は「itertools.chain()」を選ぶとよいでしょう。データの形状や用途に応じて、最適な手法を使い分けてください。

  1. Pythonでリストのリストを列ごとの個別要素に変換する方法

    Pythonでデータ分析やデータ処理を行っていると、与えられたリストを整形(リシェイプ)して、異なる列構造を持つリストを作り直す必要がある場面に遭遇します。本記事では、リストのリストを列単位で個別の要素に変換するための複数のアプローチを、サンプルコード付きでわかりやすく解説します。方法1:スライシングを使うリストを任意の位置でスライスすることで、列状の構造を作り出せます。ここでは、元のリストを中央で分割した新しいリストへと変換します。処理には2つのforループを使用し、外側のループで各サブリストの先頭(0番目)から2番目の要素までを、内側のループで2番目以降から末尾までの要素を扱います。サンプ

  2. Pythonリスト入門:作成から操作、削除まで徹底解説

    このチュートリアルでは、Pythonのリスト(List)について学びます。リストの作成方法、要素へのアクセス、要素の追加・削除、リスト自体の削除など、基本的な操作を一つずつ丁寧に解説していきます。 Pythonでは、リストは角括弧 [] を使って構築し、各要素はカンマ , で区切って記述します。 Pythonのリストは、異なる型のオブジェクトを混在させて格納できるのが特徴です。すべて文字列である必要も、整数である必要もありません。例えば、以下のように複数の型が混ざったリストを作成できます。mixedTypesList = [a, True, 1, 1.0] リストの作成方法 リストは、角括弧