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

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: パフォーマンスを重視した実用的な選択肢

用途やデータの規模に応じて適切な方法を選びましょう。

  1. Pythonでリストの最後から2番目の要素を取得する方法

    Pythonでリストの最後から2番目の要素を取得するには?Pythonでは、リストをはじめとするシーケンス型オブジェクトに対して、インデックス(添字)を使って各要素にアクセスできます。通常は0から始まるインデックスで要素を参照しますが、負の数を指定した場合は、リストの末尾から数えた位置として解釈されるのが特徴です。したがって、リストの最後から2番目の要素を取得したい場合は、インデックスとして -2 を指定します。>>> L1 = [1, 2, 3, 4, 5]>>> print(L1[-2])4この例では、リスト L1 の末尾から数えて2番目の要素である「4

  2. Pythonでリストの最後の要素を取得する方法【初心者向け】

    Pythonでリストの最後の要素を取得する基本方法 Pythonでは、リストをはじめとするシーケンス型オブジェクトに対して、インデックス(添字)を使って任意の要素にアクセスできます。インデックスは0から始まるため、最初の要素は「0」、2番目の要素は「1」というように指定します。 ここで重要になるのが負のインデックスです。負の数を指定すると、リストの末尾から逆順に数えて要素を取得できます。したがって、リストの最後の要素を取得したい場合は、インデックスとして -1 を指定するだけでOKです。 >>> L1 = [1, 2, 3, 4, 5] >>> print(