使用 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中文网其他相关文章!