Python ci fornisce vari modi per invertire una lista. Esamineremo alcune delle numerose tecniche su come inserire un elenco Pitone può essere invertito.
Esempio:
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.>
Invertire una lista in Python
Di seguito sono riportati gli approcci che tratteremo in questo articolo:
- Usando il affettare tecnica
- Inversione dell'elenco scambiando i numeri presenti e ultimi alla volta
- Usando il reverse() e inversione() funzione incorporata
- Usare un approccio a due punti
- Usando il inserire() funzione
- Utilizzando comprensione delle liste
- Invertire un elenco utilizzando Insensibile
1. Retromarcia Elenco utilizzando la tecnica di slicing
Con questa tecnica viene creata una copia dell'elenco e l'elenco non viene ordinato sul posto. La creazione di una copia richiede più spazio per contenere tutti gli elementi esistenti. Ciò esaurisce più memoria. Qui stiamo usando il affettare tecnica per invertire la nostra lista in 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))> |
>
>Produzione
[15, 14, 13, 12, 11, 10]>
Complessità temporale: SU)
Spazio ausiliario: SU)
2. Elenco inverso scambiando i numeri presenti e ultimi alla volta
Ecco l'approccio:
Se arr[], size se la lunghezza dell'array è 1, restituisce arr. elif la lunghezza dell'array è 2, scambia il primo e l'ultimo numero e restituisce arr. altrimenti inizializzare i=0. Ripeti il ciclo per i in size//2 quindi scambia il primo numero presente e l'ultimo presente se gli indici del primo e dei numeri successivi non sono gli stessi, quindi scambia il successivo e l'ultimo dei numeri successivi, quindi incrementa i+=2 e dopo il loop restituisci 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> |
>
>Produzione
Original list: [1, 2, 3, 4, 5] Reversed list: [5, 4, 3, 2, 1]>
Complessità temporale: O(log2(n)), dove N è la lunghezza dell'array specificato.
Spazio ausiliario: O(1)
3. Elenco inverso utilizzando le funzioni integrate Reversed() e Reverse()
Utilizzando invertito() possiamo invertire l'elenco e a list_reverseiterator viene creato un oggetto da cui possiamo creare una lista utilizzando il casting di tipo list(). Oppure possiamo anche usare l'elenco inversione() funzione per invertire l'elenco in atto.
Python3
test e tipi di software
lst> => [> 10> ,> 11> ,> 12> ,> 13> ,> 14> ,> 15> ]> lst.reverse()> print> (> 'Using reverse() '> , lst)> print> (> 'Using reversed() '> ,> list> (> reversed> (lst)))> |
>
>Produzione
Using reverse() [15, 14, 13, 12, 11, 10] Using reversed() [10, 11, 12, 13, 14, 15]>
Complessità temporale: O(n), dove n è la lunghezza della lista lst.
Spazio ausiliario: O(1) poiché modifica l'elenco originale in vigore e non crea un nuovo elenco.
4. Invertire un elenco utilizzando un approccio a due puntatori
In questo metodo, dichiareremo due puntatori (sostanzialmente l'indice iniziale e l'indice finale, lasciamo 'sinistra' e 'destra'). Durante la scansione dell'elenco, in ogni iterazione scambieremo gli elementi nell'indice 'sinistra' e 'destra'.
Il puntatore 'sinistro' si sposterà in avanti e il puntatore 'destra' si sposterà indietro. Continueremo il processo fino a 'primo' <'ultimo'. Ciò funzionerà sia per un numero pari di elementi che per un numero dispari di elementi.
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))> |
>
>Produzione
[7, 6, 5, 4, 3, 2, 1]>
Complessità temporale : SU)
Spazio ausiliario: O(1)
in chiave
5. Invertire una lista utilizzando la funzione insert()
In questo metodo, non invertiamo un elenco sul posto (modifichiamo l'elenco originale) né creiamo alcuna copia del file elenco . Invece, continuiamo a inserire elementi all'indice 0 dell'elenco, questo invertirà automaticamente l'elenco.
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)> |
>
>Produzione
[15, 14, 13, 12, 11, 10]>
Complessità temporale: SU)
Spazio ausiliario: O(n), dove n è la lunghezza dell'elenco.
6. Invertire un elenco utilizzando la comprensione dell'elenco
In questa tecnica, l'elenco non è ordinato sul posto. Non è necessaria una copia dell'array originale. Noi usiamo comprensione delle liste per invertire l'array e restituire l'elenco.
Troviamo la lunghezza dell'array e quindi iteriamo su di esso utilizzando l'intervallo. Ora, per sostituire l'ultimo elemento con il primo, sottraiamo la lunghezza della lista originale dall'indice dell'iteratore.
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)> |
>
>Produzione
[15, 14, 13, 12, 11, 10]>
Complessità temporale: O(n), dove n è la lunghezza dell'elenco_originale.
Spazio ausiliario: SU),
7. Invertire un elenco utilizzando Numpy
Qui useremo pacchetto insensato :
Inizializza l'elenco di input my_listConverti my_list in un array numpy 1D utilizzando np.array(my_list)Inverti l'ordine dell'array utilizzando my_array[::-1]Converti l'ordine invertito insensato array di nuovo in un elenco utilizzando .tolist()
Stampa l'elenco invertito
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)> |
>
>
Produzione:
[9, 8, 7, 6, 5, 4]>
Complessità temporale: SU)
Spazio ausiliario: SU)
Abbiamo discusso molti modi per invertire una lista in Python. Abbiamo anche menzionato la loro complessità temporale e lo spazio ausiliario per darti un'idea giusta della loro velocità di elaborazione.
Spero che questo articolo ti abbia aiutato a capire come procedere come invertire un elenco Python? e invertirai facilmente un elenco in Python.