W3docs

Come unire le liste in Python

Tutti i modi per unire liste Python: operatore +, extend(), unpacking, itertools.chain e come str.join() trasforma una lista in una string.

Python offre diversi modi per combinare liste e per trasformare una lista di stringhe in un'unica string. Questa pagina tratta entrambe le operazioni in modo chiaro:

  • Unire le liste — fondere due o più liste in una nuova lista (usando +, extend(), unpacking o itertools.chain).
  • Unire gli elementi di una lista in una string — usando il metodo str.join(), che concatena gli elementi di una lista in una string delimitata.

Capire la differenza tra queste due operazioni evita una fonte comune di confusione per i principianti.

Unire due liste in una

Usando l'operatore +

Il modo più semplice per fondere due liste è l'operatore +. Restituisce una nuova lista contenente tutti gli elementi di entrambi gli operandi senza modificare gli originali.

list1 = [1, 2, 3]
list2 = [4, 5, 6]
combined = list1 + list2
print(combined)

Output:

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

È possibile concatenare + per fondere più di due liste in un'unica espressione: a + b + c.

Usando il metodo extend()

extend() aggiunge tutti gli elementi di una lista alla fine di un'altra in place. A differenza di +, modifica la lista originale e non ne crea una nuova.

list1 = [1, 2, 3]
list2 = [4, 5, 6]
list1.extend(list2)
print(list1)

Output:

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

Usare extend() quando non è necessario mantenere intatta la list1 originale e si vuole evitare di creare una copia extra in memoria.

extend() vs append(): append() aggiunge il suo argomento come singolo elemento, quindi list1.append(list2) produce [1, 2, 3, [4, 5, 6]] — una lista annidata, non una lista fusa. Usare sempre extend() quando si vuole appiattire la seconda lista nella prima.

Usando l'unpacking (operatore *)

Python 3.5 e versioni successive consentono la sintassi di unpacking con asterisco all'interno di un letterale di lista. Questo approccio è conciso e funziona con qualsiasi numero di iterabili in un'unica espressione.

list1 = [1, 2, 3]
list2 = [4, 5, 6]
combined = [*list1, *list2]
print(combined)

Output:

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

È anche possibile inserire elementi aggiuntivi inline: [0, *list1, *list2, 7].

Usando itertools.chain()

itertools.chain() dalla libreria standard unisce qualsiasi numero di iterabili in modo lazy — nessuna lista intermedia viene creata finché non si richiedono i valori. Questa è l'opzione più efficiente in termini di memoria quando si elaborano sequenze di grandi dimensioni.

import itertools

list1 = [1, 2, 3]
list2 = [4, 5, 6]
combined = list(itertools.chain(list1, list2))
print(combined)

Output:

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

Passare itertools.chain(*nested) per appiattire una lista di liste in una sola chiamata.

Unire gli elementi di una lista in una string con str.join()

str.join() è un metodo di string — viene chiamato sulla string delimitatrice e accetta un iterabile come argomento. Restituisce una singola string con tutti gli elementi concatenati, separati dal delimitatore.

delimiter.join(iterable)

Esempio di base

python— editable, runs on the server

Output:

apple, banana, cherry

Passare una string vuota '' come delimitatore per concatenare senza alcun separatore.

Delimitatori comuni

DelimitatoreEspressioneRisultato
Virgola-spazio', '.join(['a', 'b', 'c'])a, b, c
Spazio' '.join(['Python', 'is', 'great'])Python is great
Trattino'-'.join(['2024', '01', '15'])2024-01-15
A capo'\n'.join(['line one', 'line two'])blocco multiriga
Nessun separatore''.join(['H', 'i', '!'])Hi!

Unire una lista di numeri

str.join() richiede che ogni elemento sia una string. Passare interi direttamente genera un TypeError. Convertirli prima con map(str, ...) o un'espressione generatrice.

nums = [10, 20, 30]
result = ', '.join(map(str, nums))
print(result)

Output:

10, 20, 30

Usare un'espressione generatrice ottiene lo stesso risultato e consente di formattare ogni numero durante l'elaborazione:

python— editable, runs on the server

Output:

12345

Costruire string multiriga

'\n'.join() è il modo idiomatico per costruire una string multiriga da una lista di righe senza newline finali.

lines = ['line one', 'line two', 'line three']
block = '\n'.join(lines)
print(block)

Output:

line one
line two
line three

Scegliere l'approccio giusto

ObiettivoMetodo migliore
Fondere due liste in una nuova listaOperatore +
Aggiungere tutti gli elementi di una lista a un'altraextend()
Combinare più iterabili senza una copia extraitertools.chain()
Combinare all'interno di un letterale o con elementi aggiuntiviUnpacking [*a, *b]
Trasformare una lista di stringhe in una string delimitatastr.join()
Trasformare una lista di numeri in una stringstr.join(map(str, lst))

Argomenti correlati

Esercitazione

Pratica
Which of the following ways can be used to join two lists in Python?
Which of the following ways can be used to join two lists in Python?
Was this page helpful?