リストの max()/min() によって返される最大/最小値のインデックスの取得
Python の max() とminimax などのアルゴリズムのリストに対する min() 関数では、返される最大値または最小値のインデックスを決定することが多くの場合必要になります。
問題:
返された max() または min() 値に対応するリスト内の要素のインデックス。どの手がその値を生成したかを識別します。
解決策:
min() 値のインデックスを取得するには、次のコードを使用します:
<code class="python">index_min = min(range(len(values)), key=values.__getitem__)</code>
このメソッドは、operator や enumerate などのモジュールの必要性を排除し、また itemgetter() を含むソリューションよりも優れたパフォーマンスを発揮します。
numpy 配列の場合は、次の使用を検討してください。
<code class="python">import numpy as np index_min = np.argmin(values)</code>
リストが十分に大きく、メモリ消費が許容できる場合、これは高速になります。
ベンチマーク:
以下のベンチマークは、提案されている 2 つのソリューションの効率を比較しています。
[さまざまなメソッドのランタイムのグラフを示す画像]
青い線は純粋な Python ソリューションを表し、赤い線はnumpyを使用しています。黒い線は itemgetter() を使用したリファレンス実装です。
大きなリストの場合、numpy ソリューションの方が大幅に高速です。ただし、リストが小さい場合は、純粋な Python ソリューションの方が効率的である可能性があります。
以上がPython リストの最大値/最小値のインデックスを効率的に見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。