HOWTO · Python

Come convertire una lista in stringa in Python

Questo tutorial mostra come convertire una lista in stringa in Python

In questa pagina

Per trasformare una lista in un’unica stringa, chiama join() sul separatore e passagli la lista di stringhe. Il separatore viene inserito tra gli elementi adiacenti, ma non prima del primo né dopo l’ultimo. Se la lista contiene numeri o valori di tipi diversi, converti prima ogni elemento in testo. Usa join() per assemblare il risultato, quindi prepara gli elementi con una comprensione, map() oppure un ciclo.

Convertire una lista di stringhe con join()

Esegui questo esempio:

Il codice e le etichette o gli output visibili in questa sezione restano in inglese.

words = ["Hello", "World", "from", "Python"]
print("".join(words))
print(" ".join(words))

L’esempio mostra due possibili separatori. Un separatore vuoto concatena direttamente le stringhe; uno spazio ne inserisce uno tra ogni coppia di elementi. Puoi usare qualsiasi stringa come separatore, per esempio ", ", "-" oppure " | ". Gli elementi restano invariati.

join() accetta un iterabile i cui elementi sono stringhe. Funziona anche con tuple e altri iterabili di stringhe, anche se una lista è una scelta comune quando i valori sono già raccolti. Se un elemento è un intero o un altro valore non stringa, chiamare join() sulla raccolta solleva TypeError. Converti questi valori prima di unirli, senza aspettarti che join() li converta automaticamente.

Convertire gli elementi non stringa prima di unirli

Usa str() per ottenere la rappresentazione in stringa di ciascun valore, poi unisci le stringhe risultanti:

Il codice e le etichette o gli output visibili in questa sezione restano in inglese.

values = [12, 7, 31]
result = ", ".join(str(value) for value in values)
print(result)

L’espressione str(value) for value in values è un’espressione generatrice che fornisce le stringhe convertite a join(). Se ti serve una lista degli elementi convertiti da riutilizzare in seguito, usa una comprensione di liste:

values = [12, 7, 31]
strings = [str(value) for value in values]
result = ", ".join(strings)
print(result)

str() produce una rappresentazione leggibile da una persona, ma non è un formato generico per serializzare dati strutturati. Per esempio, convertire in questo modo una lista annidata o un dizionario non produce un formato affidabile per salvare quei dati e ricostruirli. Se devi archiviare o scambiare dati mantenendone intatta la struttura, usa un formato progettato per la serializzazione.

Scegliere tra una comprensione di liste e map()

Una comprensione rende evidente, accanto ai valori prodotti, la conversione o un’altra trasformazione applicata a ogni elemento. È adatta quando vuoi modificare, filtrare o spiegare la trasformazione nella stessa espressione. La forma generatrice della sezione precedente passa i valori a join() senza creare prima un’altra lista; usa le parentesi quadre quando ti è utile avere una lista riutilizzabile.

map() applica una funzione a ogni elemento e restituisce un iteratore. Per una conversione diretta, senza altra logica, può essere una soluzione concisa:

Il codice e le etichette o gli output visibili in questa sezione restano in inglese.

values = [12, 7, 31]
result = ", ".join(map(str, values))
print(result)

Entrambi gli approcci convertono ogni numero con str() prima che join() assembli il risultato. Scegli la forma che rende la trasformazione più facile da seguire per chi legge. Nessuno dei due metodi modifica la lista originale. Per una conversione personalizzata, sostituisci str con una funzione che restituisca una stringa per ogni elemento.

Costruire una stringa con un ciclo for

Un ciclo è utile quando ogni elemento richiede una gestione condizionale o più passaggi prima di essere aggiunto. Per unire gli elementi in modo semplice, usa join(): concatenare ripetutamente stringhe in un ciclo può comportare copie aggiuntive man mano che il risultato cresce. Se ti serve un ciclo, raccogli i vari elementi e uniscili una sola volta alla fine:

Il codice e le etichette o gli output visibili in questa sezione restano in inglese.

words = ["Python", "is", "useful"]
parts = []
for word in words:
    parts.append(word)
result = " ".join(parts)
print(result)

Il separatore continua a determinare la spaziatura, così non serve aggiungere e poi rimuovere uno spazio finale. Puoi anche aggiungere istruzioni nel ciclo, per esempio per ignorare alcuni elementi o formattarli, purché ogni elemento raccolto sia una stringa. Con una lista di interi, aggiungi str(value) anziché l’intero stesso.

Nei casi più comuni, chiama join() sul separatore: usa "".join(words) per concatenare direttamente oppure " ".join(words) per separare il testo con degli spazi. Se gli elementi non sono già stringhe, convertili prima con una comprensione o con map(). Usa un ciclo quando rende più chiara la gestione elemento per elemento e, per assemblare molti elementi, preferisci unirli una sola volta.