Comment itérer sur une liste en sens inverse en Python ?
array = [0, 10, 20, 40]
for (i = array.length() - 1; i >= 0; i--)
Comment itérer sur une liste en sens inverse en Python ?
array = [0, 10, 20, 40]
for (i = array.length() - 1; i >= 0; i--)
Utilisez le reversed
fonction :
>>> xs = [0, 10, 20, 40]
>>> for i in reversed(xs):
... print(i)
Pour obtenir une liste inversée :
>>> list(reversed(xs))
[40, 20, 10, 0]
@kdlannoy Selon la page dont le lien figure dans la réponse, " Par rapport au découpage étendu, tel que range(1,4)[::-1], reversed() est plus facile à lire, s'exécute plus rapidement et utilise nettement moins de mémoire. "
Lorsque je l'ai testé, le découpage était environ deux fois plus rapide (en inversant une liste de 10 000 éléments et en créant une liste à partir de celle-ci). Je n'ai pas testé la consommation de mémoire cependant. reverse
pourrait être plus rapide cependant, si vous n'avez pas besoin de lancer vers la liste ensuite.
>>> xs = [0, 10, 20, 40]
>>> xs[::-1]
[40, 20, 10, 0]
La syntaxe des tranches étendues est expliquée aquí . Voir aussi, documentation .
Par curiosité, quels avantages (s'il y en a) cela présente-t-il par rapport à list.reverse() ?
Cela fonctionne pour tout interable, pas seulement pour les listes. L'inconvénient est qu'il n'est pas en place.
Détail : La première modifie la liste en place, la seconde renvoie juste une nouvelle liste inversée, mais elle ne modifie pas la liste originale.
Le deuxième exemple devrait être L=L[::-1]
pour inverser la liste, sinon vous ne retournerez que les valeurs inversées.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
0 votes
Ou plutôt "Comment inverser une liste pré-triée ?" (une question correcte compte tenu de ce cas d'essai spécial qui a fait dérailler la plupart des réponses :)