Invertire una lista in Python

Rayven Esplanada 11 dicembre 2023
  1. Usa range() per invertire una lista in Python
  2. Invertire una lista con il cicli while in Python
  3. Invertire una lista utilizzando l’operatore Slice in Python
  4. Usa reversed() per invertire una lista in Python
Invertire una lista in Python

Questo tutorial mostrerà diversi modi per invertire una lista in Python.

L’inversione di lista è uno dei problemi di programmazione di avviamento più comuni che si verificano quando si impara a programmare. In Python, esistono diversi modi semplici per invertire una lista.

Usa range() per invertire una lista in Python

range() è una funzione incorporata di Python che restituisce una lista di un intervallo di numeri.

Sintassi di range()

range(start, stop, step)

Questa funzione ha 3 argomenti; l’argomento principale richiesto è il secondo argomento stop, un numero che indica dove vuoi fermarti. Ci sono 2 argomenti opzionali, start specifica dove dovresti iniziare a contare e step specifica l’incremento della sequenza.

Prendi nota che stop avrà un offset di 1 poiché il conteggio inizia a 0. Per creare una lista che si ferma a 5 usando range(), il valore di stop dovrebbe essere 6.

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

Produzione:

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

Per invertire questo lista, devi specificare gli argomenti start e step.

Lo start è impostato su 5, mentre step è -1 poiché vogliamo decrementare l’intervallo di 1 ogni volta. Anche l’argomento stop dovrebbe essere impostato a -1, poiché vogliamo fermarci a 0 (poiché stop ha un offset di 1).

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

Produzione:

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

Invertire una lista con il cicli while in Python

Dichiara una lista di 10 numeri interi casuali che vogliamo creare una nuova lista in ordine inverso.

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

Usa un bucle while sull’lista per visualizzarlo al contrario. Per prima cosa, ottieni la dimensione dell’lista e deducilo di 1 per puntare all’ultimo elemento dell’lista. Dichiariamo anche una lista vuoto per memorizzare la nuova versione invertita dell’lista precedente.

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

Ora usa il bucle while per iterare e memorizzare ogni elemento nella nuova lista con ogni iterazione che decrementa idx finché non raggiunge 0.

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

print(newList)

Produzione:

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

Invertire una lista utilizzando l’operatore Slice in Python

Se preferisci non scorrere l’lista, usa l’operatore slice per diminuire l’indice dell’array di 1.

Simile a range(), l’operatore slice accetta tre argomenti: start, stop e step.

Lascia i primi due argomenti vuoti in modo che coprirà l’intero array e imposta il valore step su -1 in modo che inizi con alla fine dell’array e lo decrementi di 1 ogni volta.

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

Produzione:

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

Usa reversed() per invertire una lista in Python

Un altro modo semplice per invertire una lista in Python è usare la funzione incorporata reversed(). Questa funzione accetta un argomento della lista e restituisce un iteratore della versione invertita della stessa lista.

Utilizzando lo stesso esempio di numbers sopra, invertire l’lista utilizzando questa funzione. Non dimenticare di racchiudere la funzione con list() per memorizzare effettivamente il valore di ritorno di reversed() in una lista.

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

In alternativa, puoi anche usare un cicli for per scorrere l’lista invertito e memorizzarlo direttamente in newList.

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

L’output di entrambe le soluzioni sarà lo stesso.

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

In sintesi, Python fornisce un modo semplice per invertire una lista utilizzando la funzione reversed(). Puoi anche invertire manualmente una lista facendolo scorrere in un cicli for o while. Python ha anche un metodo semplice per invertire una lista in una singola linea se ti senti a tuo agio nell’usare l’operatore 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

Articolo correlato - Python List