Python:找到min元素的最后一个索引?

Joh*_*ith 8 python list min

例如[1,2,3,4,1,2]

具有最小元素1,但它最后一次出现在索引4处.

And*_*ark 12

>>> values = [1,2,3,4,1,2]
>>> -min((x, -i) for i, x in enumerate(values))[1]
4
Run Code Online (Sandbox Code Playgroud)

不修改原始列表,适用于任意迭代,只需要一次通过.

这将创建一个可迭代的元组,第一个值是列表中的原始元素,第二个元素是否定索引.当在这个可迭代的元组中找到最小值时,将首先比较值,然后比较索引,因此最终会得到(min_value,lowest_negative_index)的元组.通过从该元组中取出第二个元素并再次取消它,您将获得最小值的最高索引.

这是一个非常相似的替代版本,但使用键功能min():

>>> min(range(len(values)), key=lambda i: (values[i], -i))
4
Run Code Online (Sandbox Code Playgroud)

请注意,此版本仅适用于序列(列表,元组,字符串等).


Mic*_*ers 3

a = [1,2,3,4,1,2]

a.reverse()
print len(a) - a.index(min(a)) - 1
Run Code Online (Sandbox Code Playgroud)

评论后更新:

可以通过再次反转来消除副作用(但这当然效率很低)。

a.reverse()
Run Code Online (Sandbox Code Playgroud)

  • 这也有颠倒他的列表的副作用 (3认同)