Unione Lista Python

Python join lista significa concatenare una lista di stringhe con un delimitatore specificato per formare una stringa. A volte è utile quando devi convertire una lista in una stringa. Ad esempio, convertire una lista di lettere dell’alfabeto in una stringa separata da virgole da salvare in un file.

Python Join Lista

Possiamo usare la funzione join() della stringa di Python per unire una lista di stringhe. Questa funzione prende come argomento un “iterable” e la lista è un “iterable”, quindi possiamo usarla con una lista. Inoltre, la lista dovrebbe contenere stringhe, se provi a unire una lista di interi otterrai un messaggio di errore come TypeError: elemento di sequenza 0: prevista istanza str, int trovata. Vediamo un breve esempio di unione di una lista in Python per creare una stringa.

vowels = ["a", "e", "i", "o", "u"]

vowelsCSV = ",".join(vowels)

print("Vowels are = ", vowelsCSV)

Quando eseguiamo il programma sopra, produrrà il seguente output.

Vowels are =  a,e,i,o,u

Python unisce due stringhe

Possiamo anche usare la funzione join() per unire due stringhe.

message = "Hello ".join("World")

print(message) #prints 'Hello World'

Perché la funzione join() è presente nella classe String e non in List?

Una domanda che sorge tra molti sviluppatori Python è perché la funzione join() fa parte della classe String e non di List. Non sarebbe più semplice da ricordare e utilizzare la seguente sintassi?

vowelsCSV = vowels.join(",")

Esiste una domanda popolare su StackOverflow al riguardo, qui sto elencando i punti più importanti delle discussioni che hanno senso per me.

La ragione principale è che la funzione join() può essere utilizzata con qualsiasi oggetto iterabile e il risultato è sempre una String, quindi ha senso avere questa funzione nella classe String anziché in tutte le classi iterabili.

Unione di una lista con diversi tipi di dati

Osserviamo un programma in cui cercheremo di unire gli elementi di una lista contenente diversi tipi di dati.

names = ['Java', 'Python', 1]
delimiter = ','
single_str = delimiter.join(names)
print('String: {0}'.format(single_str))

Vediamo l’output di questo programma: Questa era solo una dimostrazione che una lista che contiene diversi tipi di dati non può essere combinata in una singola stringa con la funzione join(). La lista deve contenere solo valori di tipo stringa.

Dividere una stringa usando la funzione join

Possiamo usare la funzione join() per dividere una stringa con un delimitatore specificato.

names = 'Python'
delimiter = ','
single_str = delimiter.join(names)
print('String: {0}'.format(single_str))

Questo mostra che quando una stringa viene passata come argomento alla funzione join(), la divide per carattere e con il delimitatore specificato.

Utilizzando la funzione split()

Oltre a dividere con la funzione join(), è possibile utilizzare anche la funzione split() per dividere una stringa, che funziona quasi allo stesso modo della funzione join(). Vediamo un esempio di codice:

names = ['Java', 'Python', 'Go']
delimiter = ','
single_str = delimiter.join(names)
print('String: {0}'.format(single_str))

split = single_str.split(delimiter)
print('List: {0}'.format(split))

Vediamo l’output di questo programma: Abbiamo utilizzato lo stesso delimitatore per dividere di nuovo la stringa per tornare alla lista originale.

Divisione solo n volte

La funzione split() che abbiamo mostrato nell’ultimo esempio prende anche un secondo argomento opzionale che indica il numero di volte in cui deve essere eseguita l’operazione di divisione. Ecco un programma di esempio per mostrare il suo utilizzo:

names = ['Java', 'Python', 'Go']
delimiter = ','
single_str = delimiter.join(names)
print('String: {0}'.format(single_str))

split = single_str.split(delimiter, 1)
print('List: {0}'.format(split))

Vediamo l’output di questo programma: Questa volta, l’operazione di divisione è stata eseguita solo una volta come abbiamo specificato nel parametro della funzione split(). Questo è tutto per unire una lista per creare una stringa in Python e utilizzare la funzione split() per ottenere nuovamente la lista originale.

Source:
https://www.digitalocean.com/community/tutorials/python-join-list