Pregunta ¿reverse () no funciona en un Python literal?


¿Por qué esto no funciona en Python?

>>> print [0,1,0,1,1,0,1,1,1,0,1,1,1,1,0].reverse() 
None

Esperaba recuperar la lista en orden inverso.


18
2017-07-26 08:44


origen


Respuestas:


Si desea que devuelva una nueva lista en orden inverso, puede usar [::-1]

>>> [0,1,0,1,1,0,1,1,1,0,1,1,1,1,0][::-1]
[0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0]

Como todavía estoy tratando de entender el voto a la baja, si no importa que la lista original se modifique, use @ taskinoor's answer, será más rápido.

Sin embargo, si está obligado a mantener la lista original sin cambios, le sugiero que use [::-1].

from time import time
lst = [0,1,0,1,1,0,1,1,1,0,1,1,1,1,0]

s = time()
for i in xrange(5000000):
    a = lst[::-1]          # creates a reversed list
print time() -s

s = time()
for i in xrange(5000000):
    b = lst[:]             # copies the list
    b.reverse()            # reverses it
print time() -s

salidas

2.44950699806
3.02573299408

23
2017-07-26 08:49



>>> a = [3, 4, 5]
>>> print a.reverse()
None
>>> a
[5, 4, 3]
>>>

Eso es porque reverse() no devuelve la lista, sino que invierte la lista en su lugar. Entonces el valor de retorno de a.reverse() es None que se muestra en el print.


52
2017-07-26 08:47



Si desea una copia revertida de una lista, use reversed:

>>> list(reversed([1,2,3,4]))
[4, 3, 2, 1]

PD. reversed devuelve un iterador en lugar de una copia de una lista (como [][::1] hace). Por lo tanto, es adecuado, entonces necesita iterar a través de un iterable invertido. Adicional list() aquí solo se usa para la demostración.


22
2017-07-26 08:53



Solo para complementar otras respuestas. No olvides:

>> reversed_iterator = reversed([0,1,0,1,1,0,1,1,1,0,1,1,1,1,0])
>> print list(reversed_iterator)
[0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0]

De esta manera, su lista no cambia si esto es un requisito.


3
2017-07-26 08:56



el reverso cambia una variable de lista como se ve aquí lista inversa

si lo imprime después de invertirlo, aparecerá correctamente

así que solo usa una variable


1
2017-07-26 08:48