Pythonでネストされたリスト(サブリスト)から各先頭要素を取り出す3つの方法
Pythonでは、リストの要素としてさらにリストを含めることができます。このように入れ子になったリストは「サブリスト(ネストされたリスト)」と呼ばれます。本記事では、与えられたリストに含まれる各サブリストから「最初の要素」だけを取り出す方法を、3つのアプローチで解説します。
方法1:forループを使う
最もシンプルで直感的なのがforループを使う方法です。外側のリストを順番に走査し、各サブリストのインデックス0の要素を取得します。コードが読みやすく、初心者にも理解しやすいのが特徴です。
サンプルコード
Alist = [['Mon', 1], ['Tue', 'Wed', "Fri"], [12,3,7]]
print("元のリスト:\n",Alist)
print("\n各サブリストの先頭要素:\n")
for item in Alist:
print(item[0])
実行結果
元のリスト: [['Mon', 1], ['Tue', 'Wed', 'Fri'], [12, 3, 7]] 各サブリストの先頭要素: Mon Tue 12
この方法では結果が1行ずつ出力されるため、要素を個別に処理したい場合に便利です。リストとしてまとめて取得したい場合は、後述する他の方法を検討しましょう。
方法2:zip関数と*演算子を使う
*演算子(アスタリスク)を使うと、サブリストを展開して個々の要素へアクセスできます。これにより、各サブリストのインデックス0の要素をまとめて抽出し、最終的にzip関数で結合してリスト化します。
サンプルコード
Alist = [['Mon', 1], ['Tue', 'Wed', "Fri"], [12,3,7]]
print("元のリスト:\n",Alist)
print("\n各サブリストの先頭要素:\n")
print(list(list(zip(*Alist))[0]))
実行結果
元のリスト: [['Mon', 1], ['Tue', 'Wed', 'Fri'], [12, 3, 7]] 各サブリストの先頭要素: ['Mon', 'Tue', 12]
この手法はPythonらしい簡潔な書き方で、結果もリスト形式で得られます。ただし、空のサブリストが含まれる場合はエラーになる点に注意が必要です。
方法3:itemgetterを使う
operatorモジュールのitemgetter(i)は、辞書やリスト、タプルなどのイテラブルオブジェクトを受け取り、そのi番目の要素を返す呼び出し可能なオブジェクト(callable)を生成します。これをmap関数と組み合わせることで、各サブリストの先頭要素を効率的に取得できます。
サンプルコード
from operator import itemgetter
Alist = [['Mon', 1], ['Tue', 'Wed', "Fri"], [12,3,7]]
print("元のリスト:\n",Alist)
print("\n各サブリストの先頭要素:\n")
print(list(map(itemgetter(0), Alist)))
実行結果
元のリスト: [['Mon', 1], ['Tue', 'Wed', 'Fri'], [12, 3, 7]] 各サブリストの先頭要素: ['Mon', 'Tue', 12]
mapとの組み合わせは処理速度面でも有利な場合が多く、大量のデータを扱う際におすすめの方法です。
まとめ
各サブリストの先頭要素を取得するには、主に以下の3つの方法があります。
- forループ: 可読性が高く、要素を1つずつ処理したい場合に最適
- zip + *演算子: 簡潔にリスト形式で結果を得たい場合に有効
- itemgetter + map: パフォーマンスを重視した実用的な選択肢
用途やデータの規模に応じて適切な方法を選びましょう。
-
Pythonでリストの最後から2番目の要素を取得する方法
Pythonでリストの最後から2番目の要素を取得するには?Pythonでは、リストをはじめとするシーケンス型オブジェクトに対して、インデックス(添字)を使って各要素にアクセスできます。通常は0から始まるインデックスで要素を参照しますが、負の数を指定した場合は、リストの末尾から数えた位置として解釈されるのが特徴です。したがって、リストの最後から2番目の要素を取得したい場合は、インデックスとして -2 を指定します。>>> L1 = [1, 2, 3, 4, 5]>>> print(L1[-2])4この例では、リスト L1 の末尾から数えて2番目の要素である「4
-
Pythonでリストの最後の要素を取得する方法【初心者向け】
Pythonでリストの最後の要素を取得する基本方法 Pythonでは、リストをはじめとするシーケンス型オブジェクトに対して、インデックス(添字)を使って任意の要素にアクセスできます。インデックスは0から始まるため、最初の要素は「0」、2番目の要素は「1」というように指定します。 ここで重要になるのが負のインデックスです。負の数を指定すると、リストの末尾から逆順に数えて要素を取得できます。したがって、リストの最後の要素を取得したい場合は、インデックスとして -1 を指定するだけでOKです。 >>> L1 = [1, 2, 3, 4, 5] >>> print(