Articolo originale: Python Empty List Tutorial – How to Create an Empty List in Python di Estefania Cassingena Navone

Tradotto e adattato da: Dario Di Cillo

Se vuoi imparare a creare efficientemente una lista vuota in Python, questo è l'articolo che fa per te.

In quest'articolo imparerai:

  • Come creare una lista vuota utilizzando le parentesi quadre [].
  • Come creare una lista vuota usando list().
  • Casi di utilizzo.
  • Quanto sono efficienti questi metodi (uno è più rapido dell'altro!). Useremo il modulo timeit per compararli.

Iniziamo! ✨

🔹 Parentesi quadre

Puoi creare una lista vuota utilizzando delle parentesi quadre:

list

💡 Suggerimento: assegniamo la lista vuota a una variabile da utilizzare successivamente nel nostro programma.

Ad esempio:

num = []

La lista vuota ha lunghezza 0, come puoi vedere:

>>> num = []
>>> len(num)
0

Le liste vuote vengono valutate come  False in un contesto booleano:

>>> num = []
>>> bool(num)
False

Aggiungere un elemento a una lista vuota

Puoi aggiungere un elemento a una lista vuota utilizzando i metodi append() e insert():

  • append() aggiunge un elemento alla fine della lista.
  • insert() aggiunge un elemento alla lista scelta in una particolare posizione indicata da un indice.

Il valore booleano restituito per una lista dipende dal fatto che sia vuota o meno. Ciò può essere utilizzato in un'istruzione condizionale come nell'esempio seguente:

if num:
	print("Questa lista non è vuota")
else:
	print("Questa lista è vuota")

L'output di questo codice è:

Questa lista è vuota

Poiché la lista considerata era vuota, il valore restituito è False.

In generale:

  • Se la lista non è vuota, il valore restituito è True e l'istruzione if viene eseguita.
  • Se la lista è vuota, il valore restituito è False ed è l'istruzione else ad essere eseguita .

Esempio:

Nell'esempio qui sotto, creiamo una lista vuota e la assegniamo alla variabile num. Poi, usando un loop, aggiungiamo una sequenza di elementi (interi) alla lista (inizialmente vuota):

>>> num = []
>>> for i in range(3, 15, 2):
	num.append(i)

Controlliamo il valore della variabile per vedere se gli elementi sono stati aggiunti e avere conferma che la lista non è più vuota:

>>> num
[3, 5, 7, 9, 11, 13]

💡 Suggerimento: comunemente, utilizziamo append() per aggiungere il primo elemento ad una lista vuota, ma puoi utilizzare anche la funzione insert() e indice 0:

>>> num = []
>>> num.insert(0, 1.5) # aggiungi il float 1.5 all'indice 0
>>> num
[1.5]

🔸 Il costruttore list()

Alternativamente, puoi creare una lista vuota con il costruttore list().

Secondo la Documentazione Python:

Se non viene assegnato argomento, il costruttore crea una nuova lista vuota, [].
list1

💡 Suggerimento: list() crea un nuovo oggetto lista e quando non viene esplicitato l'argomento, viene generata una lista vuota.

Ad esempio:

num = list()

La lunghezza della lista vuota è 0, come puoi vedere qui sotto:

>>> num = list()
>>> len(num)
0

E il valore booleano restituito è False:

>>> num = list()
>>> bool(num)
False

Esempio:

Nell'esempio qui sotto, aggiungiamo elementi alla lista tramite l'uso di un loop:

>>> num = list()
>>> for i in range(3, 15, 2):
	num.append(i)

Il risultato è una lista non vuota, come puoi vedere:

>>> num
[3, 5, 7, 9, 11, 13]

🔹 Casi di utilizzo

  • Utilizziamo tipicamente list() per creare liste partendo da iterabili preesistenti come stringhe, dizionari o tuple.
  • Vedrai utilizzare le parentesi quadre [] per creare liste in Python perché la sintassi è molto semplice, oltre ad essere più veloce.

🔸 Efficienza

Abbiamo appena detto che [] è più veloce di list()

Ma quanto più veloce?

Verifichiamo la loro efficienza utilizzando il modulo timeit.

Per utilizzare questo modulo nel tuo programma Python, devi importarlo:

>>> import timeit

Utilizzaremo la funzione timeit da questo modulo, che puoi eseguire con la sintassi:

list2-1

💡 Suggerimento: il codice viene ripetuto più volte per ridurre differenze di tempi che possono essere generate da fattori esterni come altri processi in corso in un particolare momento. Questo fa sì che il risultato sia più attendibile dovendo comparare più risultati.

🚦 Ai vostri posti... pronti... via! Ed ecco il codice e l'output:

Prima di tutto, importiamo il modulo:

>>> import timeit

Poi, testiamo le due sintassi.

Test []:

>>> timeit.timeit('[]', number=10**4)
0.0008467000000109692

Test list():

>>> timeit.timeit('list()', number=10**4)
0.002867799999989984

💡 Suggerimento: nota che il codice che vuoi valutare è contenuto tra virgolette singole '' o doppie "". Il tempo restitutito dalla funnzione timeit è espresso in secondi.

Confrontiamo i risultati:

  • []: 0.0008467000000109692
  • list(): 0.002867799999989984

Puoi vedere che [] è molto più veloce di list() e che la differenza nel test è approssimativamente di 0.002 secondi:

>>> 0.002867799999989984 - 0.0008467000000109692
0.0020210999999790147

Sono sicuro che adesso ti stai chiedendo: perché list() è meno efficiente di [] se fanno esattamente la stessa cosa?

Beh… list() è più lento perché richiede più passaggi (verificare il nome della funzione, eseguirla e creare un oggetto lista in memoria) mentre [] può essere considerato come una scorciatoia che richiede meno passaggi intermedi per creare una lista in memoria.

Questa differenza di tempo non condizionerà molto la performance del tuo programma ma è bene sapere quale dei due metodi è più efficiente e come entrambi lavorano in background.

🔹 Riassumendo

Puoi creare una lista vuota utilizzando le parentesi quadre [] o il costruttore list(), una funzione che genera una lista vuota quando il suo argomento non viene esplicitato.

Le parentesi quadre [] sono comunemente usate in Python per creare liste vuote per via della sintassi concisa e della rapidità.

Spero che quest'articolo ti sia piaciuto e che ti sia stato d'aiuto. Adesso puoi creare delle liste vuote nei tuoi progetti in Python. ⭐️

Se vuoi approfondire la tua conoscenza delle liste, potresti apprezzare questi articoli: