list.reverse () no está funcionando

Sinceramente, no entiendo por qué esto devuelve None lugar de una lista invertida:

 >>> l = range(10) >>> print l [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> print l.reverse() None 

¿Por qué está pasando esto? Según los documentos , no estoy haciendo nada malo.

reverse modifica la lista en su lugar y devuelve None . Si lo haces

 l.reverse() print l 

Verás que tu lista ha sido modificada.

list.reverse() invierte la lista en su lugar. No devuelve la lista invertida. Para eso, usa la función reversed() :

 print reversed(l) 

O simplemente use la notación de corte extendida:

 print l[::-1] 

L.reverse() modifica L en su lugar. Como regla general, los métodos incorporados de Python mutarán o devolverán algo pero no ambos

La forma habitual de revertir una lista es usar

 print L[::-1] 

reversed(L) devuelve un listreverseiterator object que está bien para iterar sobre, pero no tan bueno si realmente desea una lista

[::-1] es solo una porción normal , el paso es -1 por lo que obtienes una copia que comienza desde el final y finaliza con el inicio

Los docs dicen

list.reverse (): Invierta los elementos de la lista, en su lugar.

en su lugar significa que la lista original se modifica, en lugar de devolver una nueva lista, por lo que la devolución que solicita que imprima es None .