max()/min() を使用したリスト内の最大値または最小値のインデックスの検索
Python の組み込みを使用する場合minimax アルゴリズムの max() および min() 関数では、返された max 項目または min 項目のインデックスを取得する必要があります。これにより、目的の値を生成した特定の手を識別できます。
元のコード:
<code class="python">for i in range(9): new_board = current_board.new_board_with_move([i / 3, i % 3], player) if new_board: temp = min_max(new_board, depth + 1, not is_min_level) values.append(temp) if is_min_level: return min(values) else: return max(values)</code>
解決策:
最小値または最大値のインデックスを取得するには、次のアプローチを利用します:
<code class="python">import functools index_min = min(range(len(values)), key=functools.cmp_to_key(lambda x, y: values[x] - values[y]))</code>
NumPy の使用が可能であれば、代わりに:
<code class="python">import numpy as np index_min = np.argmin(values)</code>
ベンチマーク結果:
次のベンチマーク結果は、Python 2.7 を実行しているマシンで取得されました:
[純粋な Python ソリューション (青)、NumPy ソリューション (赤)、および itemgetter() を比較したベンチマーク結果の画像-ベースのソリューション (黒)]
結論:
推奨されるソリューションは、追加のモジュールのインポートや列挙の使用を必要とせず、優れた速度を提供するソリューションです。ほとんどの場合。それにもかかわらず、大規模なリストの場合は、NumPy ベースのアプローチが最適である可能性があります。
以上が質疑応答の形式と記事の焦点を考慮した、いくつかのタイトルのオプションを次に示します。 直接的かつ簡潔: * Python リストの最大値または最小値のインデックスを見つけるには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。