8
votes

Python: Trouver le dernier index de l'élément min?

Par exemple [1,2,3,4,1,2]

a un élément min 1, mais cela survient pour la dernière fois à l'index 4.


0 commentaires

6 Réponses :


3
votes

len (list_) - Liste _ [:: - 1] .index (min (list_)) - 1

Obtenez la longueur de la liste, soustrayez de l'index de la min de la liste dans la liste inversée, puis soustrayez 1.


0 commentaires

3
votes
a.reverse()

1 commentaires

Cela a également l'effet secondaire d'inverser sa liste



13
votes
>>> min(range(len(values)), key=lambda i: (values[i], -i))
4

3 commentaires

Je pense que votre deuxième solution pourrait en bénéficier en ne pas allouer des tuples à chaque comparaison: min (plage (valeurs (valeurs)), clé = lambda i: valeurs [i] -i)


@ovgolovin Résultats de synchronisation intéressants, j'ai été légèrement surpris que ma version était un peu plus lente que d'autres. Il doit y avoir plus de frais généraux pour énumérer ou les expressions génératrices que je réalisées. En outre, votre modification de la deuxième solution ne donnera pas toujours la bonne réponse, considérez la liste [0, 2, 2, 2, 1] . Vous obtiendrez 4 comme résultat même s'il n'est pas le plus petit de la liste.


Je pense que les problèmes de vitesse descendent à la création de Tuplas. Voir ma question récente sur ce sujet (très évident): Stackoverflow.com/questions / 17640235 / ...



2
votes

Pas si efficace (je suis un débutant en python), mais ça marche aussi bien. L'IDX conservera simplement le dernier index d'élément minimum. Je pense que la méthode M.keijzers est la meilleure. XXX


0 commentaires

2
votes
>>> reversed(L)
<listreverseiterator object at 0x00E823B0>

0 commentaires

2
votes
>>>myList = [1,2,3,4,1,2]
>>>len(myList)-1 - myList[::-1].index(min(list))
4

0 commentaires