Notez que cela va créer temporairement une copie inverse de la séquence, alors que reversed() ne copie si nécessaire. +3 pour la création d'une copie? Désolé, mais cela mérite un -3 L[::-1]: courir plus vite que reversed(L) Sur mon ordinateur, reversed(L) est plus rapide que L[::-1].
Découpage de la liste (ls[::-1]) est idéal pour faire une copie inverse, mais sur ma machine c'est plus lent pour l'itération, même si la liste est déjà en mémoire:
>>>def sliceit(x):... l = range(x)...for i in l[::-1]:... i
...>>>def reverseit(x):... l = range(x)...for i in reversed(l):... i
...>>>%timeit sliceit(100)100000 loops, best of 3:4.04µs per loop
>>>%timeit reverseit(100)100000 loops, best of 3:3.79µs per loop
>>>%timeit sliceit(1000)10000 loops, best of 3:34.9µs per loop
>>>%timeit reverseit(1000)10000 loops, best of 3:32.5µs per loop
>>>%timeit sliceit(10000)1000 loops, best of 3:364µs per loop
>>>%timeit reverseit(10000)1000 loops, best of 3:331µs per loop
Comme c'est souvent le cas dans ce genre de cas, la différence est assez négligeable. Il peut être différent pour les différentes versions de Python (j'ai utilisé de Python 2.7 pour le test ci-dessus). Le réel avantage de l'utilisation de reversed est la lisibilité -- il serait préférable, dans la plupart des cas, même si cela coûte quelques microsecondes.
Je sais que ce fil est maintenant ans, mais un commentaire sous la accepté de répondre contient l'affirmation selon laquelle l'utilisation [::-1] est plus rapide que l'utilisation reversed(). Ceci est vrai uniquement si votre liste est explicitement mis en mémoire, ce qui est pas nécessaire lorsque l'on fait un compte à rebours. Sinon, il est plus lent:
Une autre solution:
reversed()
ne copie si nécessaire.+3 pour la création d'une copie? Désolé, mais cela mérite un -3
L[::-1]:
courir plus vite quereversed(L)
Sur mon ordinateur,
reversed(L)
est plus rapide queL[::-1]
.OriginalL'auteur Jacob
Piles incluses.
Découpage de la liste (
ls[::-1]
) est idéal pour faire une copie inverse, mais sur ma machine c'est plus lent pour l'itération, même si la liste est déjà en mémoire:Comme c'est souvent le cas dans ce genre de cas, la différence est assez négligeable. Il peut être différent pour les différentes versions de Python (j'ai utilisé de Python 2.7 pour le test ci-dessus). Le réel avantage de l'utilisation de
reversed
est la lisibilité -- il serait préférable, dans la plupart des cas, même si cela coûte quelques microsecondes.OriginalL'auteur senderle
Inverser la séquence.
OriginalL'auteur Ignacio Vazquez-Abrams
Je sais que ce fil est maintenant ans, mais un commentaire sous la accepté de répondre contient l'affirmation selon laquelle l'utilisation
[::-1]
est plus rapide que l'utilisationreversed()
. Ceci est vrai uniquement si votre liste est explicitement mis en mémoire, ce qui est pas nécessaire lorsque l'on fait un compte à rebours. Sinon, il est plus lent:...et
[::-1]
utilise plus d'espace quereversed
.reversed
est plus rapide, même pour les listes déjà en mémoire. (Voir les horaires sur mon édité réponse.)OriginalL'auteur rhombidodecahedron