Python nos proporciona varias formas de invertir una lista. Revisaremos algunas de las muchas técnicas sobre cómo una lista en Pitón se puede revertir.
Ejemplo:
Input: list = [4, 5, 6, 7, 8, 9] Output: [9, 8, 7, 6, 5, 4] Explanation: The list we are having in the output is reversed to the list we have in the input.>
Invertir una lista en Python
A continuación se detallan los enfoques que cubriremos en este artículo:
- Utilizando el rebanar técnica
- Invertir la lista intercambiando los números presentes y últimos a la vez
- Usando el invertido() y contrarrestar() función incorporada
- Usando un enfoque de dos punteros
- Utilizando el insertar() función
- Usando comprensión de la lista
- Invertir una lista usando numpy
1. revertir Lista usando la técnica de corte
En esta técnica, se hace una copia de la lista y la lista no se ordena en su lugar. Crear una copia requiere más espacio para contener todos los elementos existentes. Esto agota más memoria. Aquí estamos usando el rebanar Técnica para invertir nuestra lista en Python.
Python3
# Reversing a list using slicing technique> def> Reverse(lst):> > new_lst> => lst[::> -> 1> ]> > return> new_lst> lst> => [> 10> ,> 11> ,> 12> ,> 13> ,> 14> ,> 15> ]> print> (Reverse(lst))> |
>
>Producción
[15, 14, 13, 12, 11, 10]>
Complejidad del tiempo: En)
Espacio auxiliar: En)
2. Lista inversa intercambiando los números presentes y últimos a la vez
Aquí está el enfoque:
Si arr[], tamaño si la longitud de la matriz es 1, entonces devuelve arr. la longitud elif de la matriz es 2, intercambie el primer y el último número y devuelva arr. de lo contrario, inicialice i=0. Realice un bucle para i en tamaño // 2, luego intercambie el primer número presente y el último número presente si los índices del primer y siguiente número no son los mismos, luego intercambie el siguiente y el último de los números siguientes, luego incremente i+=2 y, después del bucle, devuelva arr.
Python3
#Python program to reverse an array> def> list_reverse(arr,size):> > #if only one element present, then return the array> > if> (size> => => 1> ):> > return> arr> > > #if only two elements present, then swap both the numbers.> > elif> (size> => => 2> ):> > arr[> 0> ],arr[> 1> ],> => arr[> 1> ],arr[> 0> ]> > return> arr> > > #if more than two elements presents, then swap first and last numbers.> > else> :> > i> => 0> > while> (i//2): #swap present and preceding numbers at time and jump to second element after swap arr[i],arr[size-i-1]=arr[size-i-1],arr[i] #skip if present and preceding numbers indexes are same if((i!=i+1 and size-i-1 != size-i-2) and (i!=size-i-2 and size-i-1!=i+1)): arr[i+1],arr[size-i-2]=arr[size-i-2],arr[i+1] i+=2 return arr arr=[1,2,3,4,5] size=5 print('Original list: ',arr) print('Reversed list: ',list_reverse(arr,size)) #This contributed by SR.Dhanush> |
>
>Producción
Original list: [1, 2, 3, 4, 5] Reversed list: [5, 4, 3, 2, 1]>
Complejidad del tiempo: O(log2(n)), donde norte es la longitud de la matriz dada.
Espacio Auxiliar: O(1)
3. Lista inversa utilizando las funciones integradas Reversed() y Reverse()
Usando invertido() podemos invertir la lista y un lista_reverseiterator Se crea el objeto, a partir del cual podemos crear una lista usando la conversión de tipo list(). O también podemos usar la lista contrarrestar() función para revertir la lista en su lugar.
Python3
lst> => [> 10> ,> 11> ,> 12> ,> 13> ,> 14> ,> 15> ]> lst.reverse()> print> (> 'Using reverse() '> , lst)> print> (> 'Using reversed() '> ,> list> (> reversed> (lst)))> |
>
>Producción
Using reverse() [15, 14, 13, 12, 11, 10] Using reversed() [10, 11, 12, 13, 14, 15]>
Complejidad del tiempo: O(n), donde n es la longitud de la lista.
Espacio auxiliar: O(1) ya que modifica la lista original vigente y no crea una nueva lista.
4. Invertir una lista utilizando un enfoque de dos punteros
En este método, declararemos dos punteros (básicamente el índice inicial y el índice final, sean 'izquierda' y 'derecha'). Mientras escaneamos la lista, en cada iteración intercambiaremos los elementos en el índice 'izquierda' y 'derecha'.
El puntero 'izquierdo' avanzará y el puntero 'derecho' retrocederá. Continuaremos el proceso hasta 'primero' <'último'. Esto funcionará tanto para un número par de elementos como para un número impar de elementos.
Python3
# Reversing a list using two-pointer approach> def> reverse_list(arr):> > left> => 0> > right> => len> (arr)> -> 1> > while> (left # Swap temp = arr[left] arr[left] = arr[right] arr[right] = temp left += 1 right -= 1 return arr arr = [1, 2, 3, 4, 5, 6, 7] print(reverse_list(arr))> |
>
>Producción
[7, 6, 5, 4, 3, 2, 1]>
Complejidad del tiempo : EN)
Espacio Auxiliar: O(1)
5. Invertir una lista usando la función insert()
En este método, no invertimos una lista en su lugar (modificamos la lista original) ni creamos ninguna copia de la lista . En cambio, seguimos insertando elementos en el índice 0 de la lista, esto invertirá automáticamente la lista.
Python3
# input list> lst> => [> 10> ,> 11> ,> 12> ,> 13> ,> 14> ,> 15> ]> # the above input can also be given as> # lst=list(map(int,input().split()))> l> => []> # empty list> # iterate to reverse the list> for> i> in> lst:> > # reversing the list> > l.insert(> 0> , i)> # printing result> print> (l)> |
verma dhanashree
>
>Producción
[15, 14, 13, 12, 11, 10]>
Complejidad del tiempo: En)
Espacio Auxiliar: O(n), donde n es la longitud de la lista.
6. Invertir una lista mediante la comprensión de listas
En esta técnica, la lista no está ordenada. No se requiere una copia de la matriz original. Usamos comprensión de la lista para invertir la matriz y devolver la lista.
Encontramos la longitud de la matriz y luego la iteramos usando el rango. Ahora, para reemplazar el último elemento por el primero, restamos la longitud de la lista original del índice del iterador.
Python3
original_list> => [> 10> ,> 11> ,> 12> ,> 13> ,> 14> ,> 15> ]> new_list> => [original_list[> len> (original_list)> -> i]> > for> i> in> range> (> 1> ,> len> (original_list)> +> 1> )]> print> (new_list)> |
>
>Producción
[15, 14, 13, 12, 11, 10]>
Complejidad del tiempo: O(n), donde n es la longitud de la lista_original.
Espacio auxiliar: En),
7. Invertir una lista usando Numpy
Aquí vamos a utilizar paquete numeroso :
Inicialice la lista de entrada my_listConvierta my_list en una matriz numpy 1D usando np.array(my_list)Invierta el orden de la matriz usando my_array[::-1]Convierta el inverso engordado matriz de nuevo a una lista usando .tolist()
Imprime la lista invertida
Python3
import> numpy as np> # Input list> my_list> => [> 4> ,> 5> ,> 6> ,> 7> ,> 8> ,> 9> ]> # Convert the list to a 1D numpy array> my_array> => np.array(my_list)> # Reverse the order of the array> reversed_array> => my_array[::> -> 1> ]> # Convert the reversed array to a list> reversed_list> => reversed_array.tolist()> # Print the reversed list> print> (reversed_list)> |
>
>
Producción:
[9, 8, 7, 6, 5, 4]>
Complejidad del tiempo: En)
Espacio auxiliar: En)
Hemos discutido muchas formas de revertir una lista en Python. También hemos mencionado sus complejidades temporales y el espacio auxiliar para darle una idea correcta sobre su velocidad de procesamiento.
Espero que este artículo te haya ayudado a comprender las formas de ¿Cómo revertir una lista de Python? y podrás revertir fácilmente una lista en Python.