Par exemple [1,2,3,4,1,2] P>
a un élément min 1, mais cela survient pour la dernière fois à l'index 4. P>
6 Réponses :
Obtenez la longueur de la liste, soustrayez de l'index de la min de la liste dans la liste inversée, puis soustrayez 1. P> len (list_) - Liste _ [:: - 1] .index (min (list_)) - 1 code> p> P>
a.reverse()
Cela a également l'effet secondaire d'inverser sa liste
>>> min(range(len(values)), key=lambda i: (values[i], -i)) 4
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) code>
@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] code>. Vous obtiendrez
4 code> 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 / ...
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.
>>> reversed(L) <listreverseiterator object at 0x00E823B0>
>>>myList = [1,2,3,4,1,2] >>>len(myList)-1 - myList[::-1].index(min(list)) 4