Python extend: per combinare due liste

Il metodo extend di Python offre ai programmatori e alle programmatrici la possibilità di ampliare una lista esistente con gli elementi di una seconda lista. È importante sapere che gli elementi vengono inseriti alla fine della lista. Per aggiungere un elemento a un determinato indice di una lista o inserire solo singoli elementi, Python insert o Python append sono la scelta migliore.

Python extend: funzionamento e sintassi

Il metodo extend() ha un funzionamento 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 programmatori e le programmatrici chiamano questa procedura concatenazione. 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ò restituita una nuova lista con tutti gli elementi: la lista originaria viene modificata direttamente. A differenza di quella originaria, la seconda lista non viene modificata. Il funzionamento 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 esattamente come previsto. La lista da aggiungere può essere precedentemente creata come oggetto oppure passata direttamente 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 eterogenea, ossia può contenere elementi di diversi tipi di dati.

Anche se extend() è usato per concatenare due liste, questo metodo ha anche altre applicazioni che dovresti conoscere. Il metodo extend accetta non soltanto liste come parametri, ma tutti gli oggetti iterabili (oggetti che contengono 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 componenti dell’iterabile vengono poi aggiunti singolarmente 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, aggiungendo i componenti della stringa (i caratteri) alla lista singolarmente.

Alternative 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 alternative.

L’operatore di addizione

L’operatore di addizione (il segno più) è uno degli operatori Python più comuni ed è usato principalmente per sommare due numeri. Può essere utilizzato sia in Python sia per altri scopi, anche per combinare liste. Con l’operatore di addizione è addirittura possibile combinare contemporaneamente tutte le liste desiderate. 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 restituisce quasi lo stesso risultato di extend(), anche se con una differenza molto importante. Al contrario del metodo extend, l’operatore di addizione non modifica nessuna delle liste passate; il risultato viene invece restituito 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 efficiente del metodo extend. Dovresti tenerne conto quando lavori con liste molto grandi o quando il programma deve essere il più efficiente possibile.

Consiglio

Se al posto dell’operatore di addizione si usa l’operatore di concatenazione (+=), non viene creata una lista aggiuntiva, ma viene modificata quella originaria. Si aggira così il deficit di efficienza dell’operatore di addizione. Tuttavia, extend() e += non funzionano allo stesso modo con tutti gli iterabili.

Il metodo append

Il metodo append ha un funzionamento simile a extend(), ma si differenzia da questo perché può aggiungere un solo elemento a una lista. Di conseguenza 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() forniscono lo stesso risultato, con la differenza che con append() non si deve indicare l’elemento da aggiungere tra parentesi quadre. Se tuttavia si desidera aggiungere 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 applicazioni web in modo semplice e rapido, e magari direttamente tramite Git? Deploy Now di IONOS è la piattaforma perfetta per te.

Per offrirti una migliore esperienza di navigazione online questo sito web usa dei cookie, propri e di terze parti. Continuando a navigare sul sito acconsenti all’utilizzo dei cookie. Scopri di più sull’uso dei cookie e sulla possibilità di modificarne le impostazioni o negare il consenso.