python - 仅针对某个索引处的元素查找列表中最小元素的索引
问题描述
假设我有以下列表:
possible_moves = [0, 1, 2, 3]
q_array = [4, 2, 3, 7, -10]
我想q_array
只为 in 索引处的元素获取最小元素的索引possible_moves
。因此,两个列表的输出应该是 1。
我使用以下代码实现了它,但它确实不是很 Pythonic。
best_value = q_array[random.choice(possible_moves)]
for move in possible_moves:
if q_array[move] <= best_value:
best_value = q_array[move]
move_chosen = move
return move_chosen
编辑:返回的值应该是最小值的索引,而不是值本身。在上面的示例中,返回 1 是因为它是索引为 in 的元素中最小值的索引possible_moves
解决方案
构建一个仅包含所需元素的列表推导式,然后找到该min()
列表的 :
min([q_array[x] for x in possible_moves])
推荐阅读
- javascript - chart.js 控制网格线之间的空间/大小
- vhdl - vhdl 中的 process 语句中的顺序执行
- scripting-language - 这是什么脚本语言?
- javascript - Javascript 解析日期
- laravel - Laravel 测试请求 - 服务提供者 - 中间件问题
- php - 看起来可疑的文件突然出现在 FTP 服务器上
- java - 列表转置
- php - bootstrap-wysihtml5 改变 iframe src
- python - 创建随机图案渐变图?
- ios - Objective C - 我希望 UIAlertController 在单击按钮时不会被删除