Il metodo extend di Python offre ai pro­gram­ma­to­ri e alle pro­gram­ma­tri­ci la pos­si­bi­li­tà di ampliare una lista esistente con gli elementi di una seconda lista. È im­por­tan­te sapere che gli elementi vengono inseriti alla fine della lista. Per ag­giun­ge­re un elemento a un de­ter­mi­na­to indice di una lista o inserire solo singoli elementi, Python insert o Python append sono la scelta migliore.

Python extend: fun­zio­na­men­to e sintassi

Il metodo extend() ha un fun­zio­na­men­to molto semplice. Prende una lista e vi inserisce alla fine una seconda lista, in modo che il primo elemento della seconda lista si trovi subito dopo l’ultimo elemento. La prima lista viene così estesa con gli elementi della seconda lista. I pro­gram­ma­to­ri e le pro­gram­ma­tri­ci chiamano questa procedura con­ca­te­na­zio­ne. La sintassi di extend() è semplice, come si vede nella riga di codice seguente:

lista.extend(lista2)
Python

In questo esempio gli elementi della lista2 vengono accodati a lista. Non viene però re­sti­tui­ta una nuova lista con tutti gli elementi: la lista ori­gi­na­ria viene mo­di­fi­ca­ta di­ret­ta­men­te. A dif­fe­ren­za di quella ori­gi­na­ria, la seconda lista non viene mo­di­fi­ca­ta. Il fun­zio­na­men­to di extend() risulta chiaro nel seguente esempio pratico:

lista = ["uno", "due", "tre"]
lista2 = ["quattro", "cinque", "sei"]
lista.extend(lista2)
print(lista) # output: ['uno', 'due', 'tre', 'quattro', 'cinque', 'sei']
lista.extend([7, 8, 9])
print(lista) # output: ['uno', 'due', 'tre', 'quattro', 'cinque', 'sei', 7, 8, 9]
Python

Come si può vedere, il metodo si comporta esat­ta­men­te come previsto. La lista da ag­giun­ge­re può essere pre­ce­den­te­men­te creata come oggetto oppure passata di­ret­ta­men­te come parametro alla chiamata del metodo. L’esempio mostra anche che gli elementi delle liste da attaccare possono essere un qualsiasi tipo di dati. Questo perché una lista Python può essere ete­ro­ge­nea, ossia può contenere elementi di diversi tipi di dati.

Anche se extend() è usato per con­ca­te­na­re due liste, questo metodo ha anche altre ap­pli­ca­zio­ni che dovresti conoscere. Il metodo extend accetta non soltanto liste come parametri, ma tutti gli oggetti iterabili (oggetti che con­ten­go­no elementi sui quali si può iterare). Tra gli iterabili figurano anche le liste in Python, le stringhe in Python e i dizionari in Python. Chiamando extend() si può passare qualsiasi iterabile come parametro. I com­po­nen­ti dell’iterabile vengono poi aggiunti sin­go­lar­men­te alla lista. Questa proprietà è spiegata nell’esempio seguente.

chars = ['a', 'b', 'c']
string = "def"
chars.extend(string)
print(chars) # output: ['a', 'b', 'c', 'd', 'e', 'f']
Python

In questo esempio una stringa è stata passata come argomento, ag­giun­gen­do i com­po­nen­ti della stringa (i caratteri) alla lista sin­go­lar­men­te.

Al­ter­na­ti­ve a Python extend

Il metodo extend ti offre una soluzione elegante per ampliare una lista con gli elementi di un’altra lista. Esistono comunque alcune valide al­ter­na­ti­ve.

L’operatore di addizione

L’operatore di addizione (il segno più) è uno degli operatori Python più comuni ed è usato prin­ci­pal­men­te per sommare due numeri. Può essere uti­liz­za­to sia in Python sia per altri scopi, anche per combinare liste. Con l’operatore di addizione è ad­di­rit­tu­ra possibile combinare con­tem­po­ra­nea­men­te tutte le liste de­si­de­ra­te. Vediamolo nell’esempio seguente:

europa = ["Germania", "Finlandia"]
asia = ["Cina", "India"]
africa = ["Sudan", "Mali"]
paesi = europa + asia + africa
print(europa) # output: ['Germania', 'Finlandia']
print(asia) # output: ['Cina', 'India']
print(africa) # output: ['Sudan', 'Mali']
print(paesi) # output: ['Germania', 'Finlandia', 'Cina', 'India', 'Sudan', 'Mali']
Python

Come possiamo vedere, questa procedura re­sti­tui­sce quasi lo stesso risultato di extend(), anche se con una dif­fe­ren­za molto im­por­tan­te. Al contrario del metodo extend, l’operatore di addizione non modifica nessuna delle liste passate; il risultato viene invece re­sti­tui­to sotto forma di una nuova lista. Poiché così viene creato un nuovo oggetto in memoria, per combinare due liste l’operatore di addizione risulta meno ef­fi­cien­te del metodo extend. Dovresti tenerne conto quando lavori con liste molto grandi o quando il programma deve essere il più ef­fi­cien­te possibile.

Consiglio

Se al posto dell’operatore di addizione si usa l’operatore di con­ca­te­na­zio­ne (+=), non viene creata una lista ag­giun­ti­va, ma viene mo­di­fi­ca­ta quella ori­gi­na­ria. Si aggira così il deficit di ef­fi­cien­za dell’operatore di addizione. Tuttavia, extend() e += non fun­zio­na­no allo stesso modo con tutti gli iterabili.

Il metodo append

Il metodo append ha un fun­zio­na­men­to simile a extend(), ma si dif­fe­ren­zia da questo perché può ag­giun­ge­re un solo elemento a una lista. Di con­se­guen­za non è neanche possibile passare un iterabile a questo metodo. Vediamolo nell’esempio di seguito:

list = [0, 1, 1, 2]
list.extend([3])
print(list) # output: [0, 1, 1, 2, 3]
list.append(5)
print(list) # output: [0, 1, 1, 2, 3, 5]
Python

Qui, extend() e append() for­ni­sco­no lo stesso risultato, con la dif­fe­ren­za che con append() non si deve indicare l’elemento da ag­giun­ge­re tra parentesi quadre. Se tuttavia si desidera ag­giun­ge­re alla lista più elementi con append(), occorre iterare su una lista già presente con il ciclo for in Python. Pertanto ha senso usare append() solo se si tratta davvero di un singolo elemento.

Consiglio

Desideri mettere online il tuo sito o altre ap­pli­ca­zio­ni web in modo semplice e rapido, e magari di­ret­ta­men­te tramite Git? Deploy Now di IONOS è la piat­ta­for­ma perfetta per te.

Vai al menu prin­ci­pa­le