español - ¿Invertir() no funciona en un literal de Python?
qgis girona (5)
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 negativo, si no importa que la lista original cambie, use la respuesta de @ taskinoor , será más rápido.
Sin embargo, si necesita mantener la lista original sin cambios, le sugiero que utilice [::-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
¿Por qué no funciona esto 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.
Si desea una copia invertida de una lista, use reversed
:
>>> list(reversed([1,2,3,4]))
[4, 3, 2, 1]
ps reversed
devuelve un iterador en lugar de una copia de una lista (como hace [][::1]
). Por lo que es adecuado, entonces debe iterar a través de un iterable invertido. list()
adicional list()
aquí utilizada solo para la demostración.
Solo para complementar otras respuestas. No se olvide:
>> 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 se modifica si se trata de un requisito.
reversa cambia una variable de lista como se ve aquí lista de reversa
Si lo imprime después de revertirlo, se mostrará correctamente.
así que solo usa una variable
>>> a = [3, 4, 5]
>>> print a.reverse()
None
>>> a
[5, 4, 3]
>>>
Es porque reverse()
no devuelve la lista, sino que invierte la lista en su lugar. Por lo tanto, el valor de retorno de a.reverse()
es None
que se muestra en la print
.