首页 > 解决方案 > 仅针对某个索引处的元素查找列表中最小元素的索引

问题描述

假设我有以下列表:

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

标签: python

解决方案


构建一个仅包含所需元素的列表推导式,然后找到该min()列表的 :

min([q_array[x] for x in possible_moves])

推荐阅读