Invertir una lista o una matriz es una tarea de programación habitual. Hay muchos casos en los que puedes necesitar presentar los datos en orden inverso, como al ordenar una lista.

¿Cómo puedes invertir una lista o una matriz con Python? En este artículo aprenderás los diferentes enfoques.

Crear una copia con un bucle for

Aunque el bucle for de Python es más verboso, puede ser útil en algunos casos. Por ejemplo, proporciona más flexibilidad al realizar una lógica compleja en algunos puntos de la operación inversa.

Cuando se utiliza un bucle indentado para el enfoque común es iterar a través de la lista original en orden inverso. Empezando por el último elemento, cada iteración añade el elemento anterior a una nueva lista.

Dada una lista de números enteros entre el uno y el nueve como ejemplo, he aquí cómo invertir una matriz utilizando una sangría para bucle:

languages = [1, 2, 3, 4, 5, 6, 7, 8, 9]

# Create an empty list to hold the reversed array:
reversed_list = []

# Substract one from the length of the original array to start from the last index:
reducer = len(languages)-1

# Reverse the list inside a for loop:
for i in languages:
reversed_list.append(languages[reducer]) # Append the result to the empty list
reducer -=1 # Decrease the index by one at each iteration using the reducer

print(reversed_list)

Output:

[9, 8, 7, 6, 5, 4, 3, 2, 1]


Invertir una lista o una matriz mediante la comprensión de listas

La comprensión de una lista produce un código más corto. Y no hace falta una variable temporal porque la comprensión de listas actúa sobre una lista en su lugar.

Para realizar la operación anterior, utilizando una comprensión de lista:

reducer = len(languages)

# Decrement the index within a range function using for loop in a list comprehension
Reversed_list = [languages[reducer] for reducer in range(reducer -1,-1,-1)]
print(Reversed_list)

Output:
[9, 8, 7, 6, 5, 4, 3, 2, 1]

Utiliza el operador de corte

El operador de corte de la lista es bastante sencillo, aunque tiene algunas limitaciones. Por ejemplo, es posible que no puedas personalizar la salida como lo harías al utilizar un para bucle.

A continuación te explicamos cómo invertir una lista utilizando el operador de corte:

languages = [1, 2, 3, 4, 5, 6, 7, 8, 9]
rev_list = languages[::-1]
print(rev_list)

Output:
[9, 8, 7, 6, 5, 4, 3, 2, 1]

El [::-1] es un atajo inteligente que da como resultado una lista invertida. En realidad, significa «copiar cada elemento de la lista, empezando por el final y contando hacia atrás», es decir, ¡»invertirla»!

Utilizar el método inverso de una matriz

Este es otro método que actúa en su lugar: modifica la matriz original. Esto puede ser un inconveniente, ya que no puedes conservar la lista anterior para otras operaciones.

A continuación te explicamos cómo invertir una matriz utilizando el método inverso:

languages = [1, 2, 3, 4, 5, 6, 7, 8, 9]
languages.reverse()
print(languages)

Output:
[9, 8, 7, 6, 5, 4, 3, 2, 1]

Utiliza la función inversa

La función invertida itera sobre una lista, matriz o cualquier otra secuencia y devuelve su copia invertida. Sin embargo, tienes que declarar explícitamente la salida invertida como una lista.

Así es como funciona:

languages = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(list(reversed(languages)))

Output:
[9, 8, 7, 6, 5, 4, 3, 2, 1]

Ser creativo con las matrices

Las matrices o listas son formas habituales de almacenar datos. Dependiendo de tu objetivo, puede que quieras presentar los datos al cliente en orden inverso. Una forma de hacerlo es invertir la matriz o la lista antes de renderizarla. Como has visto, hay un par de formas de invertir una lista en Python. Elige la que mejor te funcione y se ajuste a tu lógica para un problema concreto.

Quizás también quieras ver cómo invertir una matriz en otros lenguajes de programación para entender mejor la lógica de fondo.