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

Pythonで各サブリストの最後の要素を取得する3つの方法

Pythonでは、リストの中にさらにリストを要素として持つことができます。このようにネストされたリストは「サブリスト」と呼ばれます。本記事では、与えられたリストから各サブリストの最後の要素だけを取り出す方法を、3つの異なるアプローチで解説します。

方法1: forループを使う

もっともシンプルなのがforループを使う方法です。リスト内の各サブリストを順番に処理し、Pythonの負のインデックス -1 を指定することで、末尾の要素を簡単に取得できます。

コード例

Alist = [['Mon', 1], ['Tue', 'Wed', "Fri"], [12, 3, 7]]
print("Given List:\n", Alist)
print("Last Items from sublists:\n")
for item in Alist:
    print(item[-1])

実行結果

Given List:
[['Mon', 1], ['Tue', 'Wed', 'Fri'], [12, 3, 7]]
Last Items from sublists:
1
Fri
7

方法2: zipと*(アンパック)を使う

* 演算子を使うと、サブリストをアンパックして個々の要素にアクセスできます。ここでは reversed 関数で各サブリストを逆順にしてから先頭の要素(=元のリストの最後の要素)を取得し、最後に zip でまとめて結果をリスト化します。

コード例

Alist = [['Mon', 1], ['Tue', 'Wed', "Fri"], [12, 3, 7]]
print("Given List:\n", Alist)
print("\nLast Items from sublists:\n")
print(list(list(zip(*map(reversed, Alist)))[0]))

実行結果

Given List:
[['Mon', 1], ['Tue', 'Wed', 'Fri'], [12, 3, 7]]
Last Items from sublists:
[1, 'Fri', 7]

方法3: itemgetterを使う

operator モジュールの itemgetter(i) は、リスト・タプル・辞書などのイテラブルオブジェクトを受け取り、そのi番目の要素を返す呼び出し可能オブジェクトを生成します。itemgetter(-1) を指定すれば末尾の要素が取得できるため、map 関数と組み合わせることで簡潔に記述できます。

コード例

from operator import itemgetter

Alist = [['Mon', 1], ['Tue', 'Wed', "Fri"], [12, 3, 7]]
print("Given List:\n", Alist)
print("\nLast Items from sublists:\n")
print(list(map(itemgetter(-1), Alist)))

実行結果

Given List:
[['Mon', 1], ['Tue', 'Wed', 'Fri'], [12, 3, 7]]
Last Items from sublists:
[1, 'Fri', 7]

まとめ

方法特徴
forループ初心者にも分かりやすく、可読性が高い
zip + *関数型スタイルで一行にまとめられる
itemgettermapと組み合わせて高速かつ簡潔に書ける

用途や可読性の要件に応じて、これらの方法を使い分けるとよいでしょう。単純な処理ならforループ、ワンライナーで書きたい場合は itemgetter(-1)map の組み合わせが特におすすめです。

  1. Pythonで整数リストの各要素に値Kを加算する3つの方法

    データ分析では、新しいシナリオの結果を判断するために、Pythonリストの各要素に特定の値を加算する必要がある場面があります。これにより、異なる値を与えた場合にデータセットがどのように振る舞うかを複数のシナリオでテストでき、そうした状況に対応できるモデルやアルゴリズムの構築につながります。本記事では、リストの全要素に同じ値を加算するための代表的な3つの手法を、具体的なコード例とともに解説します。方法1:リスト内包表記を使うリスト内包表記は、リストの各要素をループ処理する際にもっとも広く使われる簡潔な書き方です。以下の例では、シンプルなforループの構文でリストの各要素に同じ数値を加算しています

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

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