Pregunta ¿Cómo puedo invertir una lista en Python?


¿Cómo puedo hacer lo siguiente en Python?

array = [0, 10, 20, 40]
for (i = array.length() - 1; i >= 0; i--)

Necesito tener los elementos de una matriz, pero de principio a fin.


733
2017-10-15 06:59


origen


Respuestas:


Puedes hacer uso del reversed función para esto como:

>>> array=[0,10,20,40]
>>> for i in reversed(array):
...     print(i)

Tenga en cuenta que reversed(...) no devuelve una lista. Puedes obtener una lista invertida usando list(reversed(array)).


924
2017-10-15 07:02



>>> L = [0,10,20,40]
>>> L[::-1]
[40, 20, 10, 0]

La sintaxis de segmento extendido se explica bien en Python Novedades Entrada para publicación 2.3.5

Por solicitud especial en un comentario esta es la documentación de corte más reciente.


1020
2017-10-15 07:01



>>> L = [0,10,20,40]
>>> L.reverse()
>>> L
[40, 20, 10, 0]

O

>>> L[::-1]
[40, 20, 10, 0]

292
2017-10-15 07:03



Esto es para duplicar la lista:

L = [0,10,20,40]
p = L[::-1]  #  Here p will be having reversed list

Esto es para invertir la lista in situ:

L.reverse() # Here L will be reversed in-place (no new list made)

38
2018-03-09 07:36



Creo que la mejor manera de revertir una lista en Python es hacer:

a = [1,2,3,4]
a = a[::-1]
print(a)
>>> [4,3,2,1]

El trabajo ya está hecho, y ahora tienes una lista invertida.


23
2017-09-21 15:52



Para revertir el mismo uso de la lista:

array.reverse()

Para asignar una lista invertida a otra lista, use:

newArray = array[::-1] 

22
2017-11-20 16:12



Usar rebanar, p. array = array [:: - 1], es un truco ingenioso y muy pitónico, pero un poco oscuro para los novatos, tal vez. Usar el método reverse () es una buena forma de ir en la codificación diaria porque es fácil de leer.

Sin embargo, si necesita revertir una lista como en una pregunta de entrevista, probablemente no podrá usar métodos integrados como estos. El entrevistador observará cómo aborda el problema en lugar de la profundidad del conocimiento de Python, se requiere un enfoque algorítmico. El siguiente ejemplo, utilizando un intercambio clásico, podría ser una forma de hacerlo: -

def reverse_in_place(lst):      # Declare a function
    size = len(lst)             # Get the length of the sequence
    hiindex = size - 1
    its = size/2                # Number of iterations required
    for i in xrange(0, its):    # i is the low index pointer
        temp = lst[hiindex]     # Perform a classic swap
        lst[hiindex] = lst[i]
        lst[i] = temp
        hiindex -= 1            # Decrement the high index pointer
    print "Done!"

# Now test it!!
array = [2, 5, 8, 9, 12, 19, 25, 27, 32, 60, 65, 1, 7, 24, 124, 654]

print array                    # Print the original sequence
reverse_in_place(array)        # Call the function passing the list
print array                    # Print reversed list


**The result:**
[2, 5, 8, 9, 12, 19, 25, 27, 32, 60, 65, 1, 7, 24, 124, 654]
Done!
[654, 124, 24, 7, 1, 65, 60, 32, 27, 25, 19, 12, 9, 8, 5, 2]

Tenga en cuenta que esto no funcionará en Tuplas o secuencias de cadenas, porque las cadenas y las tuplas son inmutables, es decir, no puede escribir en ellas para cambiar los elementos.


18
2018-02-25 14:51



for x in array[::-1]:
    do stuff

16
2017-10-15 07:01