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

Pythonでネストされたリストの各サブリストから最大値を取得する方法

Pythonでは、リストの中にリストが入った「ネストされたリスト(リストのリスト)」を扱うことがよくあります。このようなデータ構造において、内側の各サブリストから最大値を取り出したいケースは多々あります。

本記事では、代表的な2つの方法——リスト内包表記とmax()関数を組み合わせる方法、そしてmap()関数とmax()関数を組み合わせる方法——を紹介します。

方法1:max関数とinを使ったリスト内包表記

最もシンプルで可読性が高いのが、リスト内包表記を使う方法です。for文でサブリストを1つずつ取り出しながら、それぞれにmax()関数を適用することで、各サブリストの最大値をまとめて取得できます。

コード例

Alist = [[10, 13, 454, 66, 44], [10, 8, 7, 23]]
# 元となるリスト
print("元のリスト:\n ", Alist)
# 各サブリストにmaxを適用
res = [max(elem) for elem in Alist]
# 最大値を出力
print("各サブリストの最大値:\n ", res)

実行結果

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

元のリスト:
[[10, 13, 454, 66, 44], [10, 8, 7, 23]]
各サブリストの最大値:
[454, 23]

最初のサブリスト [10, 13, 454, 66, 44] の最大値は 454、2番目のサブリスト [10, 8, 7, 23] の最大値は 23 であるため、結果として [454, 23] という新しいリストが生成されます。

方法2:map関数とmax関数を組み合わせる

もうひとつの方法は、map()関数を使うアプローチです。map(max, Alist)と書くことで、Alist内の各サブリスト(イテラブルな要素)に対して順番にmax()関数が適用されます。戻り値はmapオブジェクトなので、list()で明示的にリストへ変換する点に注意してください。

コード例

Alist = [[10, 13, 454, 66, 44], [10, 8, 7, 23]]
# 元となるリスト
print("元のリスト:\n ", Alist)
# mapで各サブリストにmaxを適用
res = list(map(max, Alist))
# 最大値を出力
print("各サブリストの最大値:\n ", res)

実行結果

実行すると、先ほどと同じ結果が得られます。

元のリスト:
[[10, 13, 454, 66, 44], [10, 8, 7, 23]]
各サブリストの最大値:
[454, 23]

どちらの方法を選ぶべきか?

  • リスト内包表記:Pythonicで読みやすく、条件を追加したい場合(例:空リストのスキップなど)にも柔軟に対応できるため、一般的にはこちらが推奨されます。
  • map関数:既存のコードとの一貫性や、関数型スタイルを好む場合に有効です。単純な処理ではパフォーマンスもほぼ同等です。

いずれの方法でも、ネストされたリストから各サブリストの最大値を簡潔に抽出できるため、用途やチームのコーディング規約に応じて使い分けるとよいでしょう。

  1. Pythonでリストのリストから各インデックスの最小値を求める方法

    プログラミングでは、リスト内の各要素の最小値を求めたいケースがよくあります。特に行列演算を扱う場合、行列の各列の最小値を求める必要があります。Pythonでは、行列の各列は「リストのリスト」として表現されるため、これは「リストのリストから各インデックス(位置)ごとの最小値を取り出す」処理に相当します。本記事では、この問題を解決するための代表的な2つの方法を、具体的なコード例とともにわかりやすく解説します。方法1:min()とzip()を組み合わせる最もシンプルな方法は、組み込み関数のmin()とzip()を組み合わせるアプローチです。zip()関数を使うと、複数のリストから同じインデックス位置

  2. Pythonでリスト内の最大値を持つ要素を見つける方法

    Pythonのリストから最大値を持つ要素を見つけるには、組み込み関数 max() にリストを引数として渡すだけです。max() 関数はリストを先頭から順に走査し、それまでに見つけた最大値を記録しながら末尾まで進み、最終的にその最大値を返します。基本的な使い方以下は、リスト内の最大値を取得するシンプルな例です。my_list = [2, 3, 1, 5, -1] print(max(my_list))出力結果このコードを実行すると、次のように最大値が出力されます。5最大値のインデックス(出現位置)も取得する方法最大値そのものだけでなく、リスト内で最大値が出現するすべての位置(インデックス)を知り