说我有以下列表:
possible_moves = [0, 1, 2, 3]
q_array = [4, 2, 3, 7, -10]
我只想为q_array
中索引处的元素获取possible_moves
中最小元素的索引。因此,两个列表的输出应为1。
我使用下面的代码实现了它,但实际上并不是Python语言。
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是因为它是possible_moves
答案 0 :(得分:2)
构建仅包含所需元素的列表理解,然后找到该列表的min()
:
min([q_array[x] for x in possible_moves])
答案 1 :(得分:1)
您可以将min
列表中的possible_moves
函数与__getitem__
列表中的q_array
方法用作关键函数:
min(possible_moves, key=q_array.__getitem__)
这将返回:1
答案 2 :(得分:1)
将数据放入字典中,然后获取具有最小值的密钥。
>>> d = {i: q_array[i] for i in possible_moves}
>>> move_chosen = min(d, key=d.get)
1
这类似于blhsing's answer。