Cómo invertir una lista en Python

Rayven Esplanada 11 diciembre 2023
  1. Usando range() para revertir una lista en Python
  2. Invertir una lista por el bucle while en Python
  3. Invertir una lista usando el operador Slice en Python
  4. Usa reversed() para revertir una lista en Python
Cómo invertir una lista en Python

Este tutorial mostrará diferentes formas de cómo invertir una lista en Python.

La inversión de lista es uno de los problemas de programación inicial más comunes que se experimentan cuando se aprende a programar. En Python, hay varias maneras fáciles de invertir una lista.

Usando range() para revertir una lista en Python

range() es una función incorporada en Python que produce una lista de un rango de números.

La sintaxis de range()

range(start, stop, step)

Esta función tiene 3 argumentos; el principal argumento requerido es el segundo argumento stop, un número que denota dónde quieres parar. Hay 2 argumentos opcionales, start especifica donde debes empezar a contar y step especifica el incremento de la secuencia.

Ten en cuenta que stop tendrá un desfase de 1 ya que el conteo comienza en 0. Para crear una lista que se detenga en 5 usando range(), el valor de parada tendría que ser 6.

numbers = list(range(6))
print(numbers)

Resultado:

[0, 1, 2, 3, 4, 5]

Para revertir esta lista, entonces tienes que especificar los argumentos start y step.

El start está puesto en 5, mientras que el step es 1, ya que queremos disminuir el rango en 1 cada vez. El argumento stop también debe ser puesto en 1, ya que queremos detenernos en 0 (ya que stop tiene un desplazamiento de 1).

numbers = list(range(5, -1, -1))
print(numbers)

Resultado:

[5, 4, 3, 2, 1, 0]

Invertir una lista por el bucle while en Python

Declarar una lista de 10 números enteros aleatorios que queremos crear una nueva lista en orden inverso.

numbers = [66, 78, 2, 45, 97, 17, 34, 105, 44, 52]

Usar un bucle de tiempo sobre la lista para obtenerla en orden inverso. Primero, obtén el tamaño de la lista y dedúcelo por 1 para apuntar al último elemento de la lista. Declaremos también una lista vacía para almacenar la nueva versión invertida de la lista anterior.

idx = len(numbers) - 1
newList = []

Ahora usa el bucle while para iterar y almacenar cada elemento de la nueva lista con cada iteración disminuyendo idx hasta que llegue a 0.

while idx >= 0:
    newList.append(numbers[idx])
    idx = idx - 1

print(newList)

Resultado:

[52, 44, 105, 34, 17, 97, 45, 2, 78, 66]

Invertir una lista usando el operador Slice en Python

Si prefieres no hacer un bucle sobre la lista, entonces usa el operador slice para disminuir el índice del array en 1.

De forma similar a range(), el operador slice acepta tres argumentos: start, stop y step.

Deja los dos primeros argumentos en blanco para que cubra todo el array y establece el valor de step en -1 para que empiece al final del array y lo reduzca en 1 cada vez.

newList = numbers[::-1]
print(newList)

Resultado:

[52, 44, 105, 34, 17, 97, 45, 2, 78, 66]

Usa reversed() para revertir una lista en Python

Otra forma fácil de invertir una lista en Python es usar la función incorporada reversed(). Esta función acepta un argumento de lista y devuelve un iterador de la versión invertida de la misma lista.

Usando el mismo ejemplo numbers de arriba, invierta la lista usando esta función. No olvide envolver la función con list() para almacenar realmente el valor de retorno de reversed() en una lista.

newList = list(reversed(numbers))
print(newList)

Alternativamente, también puede usar un bucle for para iterar sobre la lista invertida y almacenarla directamente en newList.

newList = [num for num in reversed(numbers)]
print(newList)

La salida de ambas soluciones será la misma.

[52, 44, 105, 34, 17, 97, 45, 2, 78, 66]

En resumen, Python proporciona una forma sencilla de invertir una lista haciendo uso de la función reversed(). También puedes revertir una lista manualmente haciendo un bucle en un bucle for o while. Python también tiene un método sencillo para revertir una lista en una sola línea si se siente cómodo usando el operador slice.

Rayven Esplanada avatar Rayven Esplanada avatar

Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.

LinkedIn

Artículo relacionado - Python List