HOWTO · Python

Python でリスト内の最大要素のインデックスを見つける

このチュートリアルでは、Python でリスト内の最大要素のインデックスを見つける方法について説明します。

このページの内容

リストを使用して要素を効率的に保存およびアクセスできます。 それぞれのインデックスを使用してアクセスできます。 リスト クラスには、リストを簡単に操作できるようにするさまざまな関数があります。

この記事では、Python でリスト内の最大要素のインデックスを見つける方法を示します。

max() 関数と for ループを使用して、Python でリスト内の最大要素のインデックスを見つける

max() 関数を使用して、リスト内の要素の最大値を取得できます。 for ループを使用して、この要素のインデックスを見つけることもできます。

リストを繰り返し処理し、各要素を比較します。 特定の要素に一致すると、ループ内のカウンター変数の値を返し、break キーワードで抜け出します。

例:

lst = [1, 4, 8, 9, -1]
m = max(lst)
for i in range(len(lst)):
    if lst[i] == m:
        print(i)
        break

出力:

3

max() および index() 関数を使用して、Python でリスト内の最大要素のインデックスを見つける

リストに存在する場合、指定された要素のインデックスを返す Python の index() 関数もあります。 そうでない場合は、ValueError をスローします。

リスト内の最大要素のインデックスを取得するには、まず max() 関数で最大要素を見つけ、index() 関数でそのインデックスを見つけます。

例:

lst = [1, 4, 8, 9, -1]
m = max(lst)
print(lst.index(m))

出力:

3

max() および enumerate() 関数を使用して、Python でリスト内の最大要素のインデックスを見つける

Python では、enumerate 変数は iterable のすべての要素にカウンター変数を付加します。 反復可能な enumerate 型のオブジェクトを返します。

リスト内包表記を使用して、カウンター変数をリスト内のタプルとして、以前の要素の新しいリストを作成できます。 次に、max() 関数を使用して、最大要素とそのインデックスを返すことができます。

例:

lst = [1, 4, 8, 9, -1]
a, i = max((a, i) for (i, a) in enumerate(lst))
print(i)

出力:

3

max() および operator.itemgetter() 関数を使用して、Python でリスト内の最大要素のインデックスを見つける

operator モジュールの itemgetter() 関数は、オペランドから要素を取得するために使用できる呼び出し可能なオブジェクトを返します (オペランドは反復可能です)。

max() 関数には、最大要素を選択する際の比較基準を決定できる key パラメーターがあります。 max() 関数は、このパラメーターの値として itemgetter() 関数を使用して最大要素のインデックスを直接返します。

例:

import operator

lst = [1, 4, 8, 9, -1]
i = max(enumerate(lst), key=operator.itemgetter(1))[0]
print(i)

出力:

3

このメソッドは、最大要素とそのインデックスを 1 行で見つけます。 したがって、以前の方法よりも高速なアプローチと見なされます。

max() および __getitem__() 関数を使用して、Python でリスト内の最大要素のインデックスを見つける

マジック関数 __getitem__()operator.itemgetter() メソッドによって内部的に呼び出されます。 前の方法で使用した operator.itemgetter() 関数の代わりに使用できます。

このマジック関数を直接使用して、オペレーター モジュールのインポートを回避し、コードの実行を高速化できます。

例:

lst = [1, 4, 8, 9, -1]
i = max(range(len(lst)), key=lst.__getitem__)
print(i)

出力:

3

numpy.argmax() 関数を使用して、Python でリスト内の最大要素のインデックスを見つける

配列内の最大要素のインデックスを見つけるには、numpy.argmax() 関数 を使用します。 この関数はリストで機能し、最大要素のインデックスを返すことができます。

例:

import numpy as np

lst = [1, 4, 8, 9, -1]
i = np.argmax(lst)
print(i)

出力:

3

まとめ

結論として、いくつかの方法を使用して、リスト内の最大要素のインデックスを見つけることができます。

numpy.argmax() 関数を除くすべてのメソッドは、max() 関数を使用します。 enumerate()itemgetter() を含むメソッドは、より高速で効率的です。