Come posso convertire un elenco in una stringa con spazi in Python?


92

Come posso convertire un elenco in una stringa separata da spazi in Python?

Ad esempio, voglio convertire questo elenco:

my_list = [how,are,you]

Nella stringa "how are you"

Gli spazi sono importanti. Non voglio ottenere ciò howareyouche ho fatto finora con il mio tentativo di utilizzo

"".join(my_list)

18
Suggerimento: non utilizzare listcome nome di variabile.
Tim Pietzcker

Risposte:


195
" ".join(my_list)

devi unirti con uno spazio non una stringa vuota ...


7
Codice come questo è il motivo per cui mi piace Python. Così semplice.
Josh

cosa succede se abbiamo una stringa in questo formato, list = ['how ', 'are ', 'you '] allora come convertirla in elenco.
Muhammad Taqi

1
@MuhammadTaqi quindi spoglia l'elemento be4 unendosi ..." ".join([i.strip() for i in my_list)
JACK ZHANG

17

Lo inserirò come alternativa solo per il gusto di farlo, anche se è praticamente inutile rispetto agli " ".join(my_list)archi. Per le non stringhe (come un array di int) questo potrebbe essere migliore:

" ".join(str(item) for item in my_list)

7

Anche per Non String listpossiamo fare così

" ".join(map(str, my_list))

2

Quindi, per ottenere l'output desiderato, dovremmo prima sapere come funziona la funzione.

La sintassi per il join()metodo descritta nella documentazione di python è la seguente:

string_name.join(iterable)

Cose da notare:

  • Restituisce un stringconcatenato con gli elementi di iterable. Il separatore tra gli elementi è il file string_name.
  • Qualsiasi valore non stringa nel file iterablegenererà un fileTypeError

Ora, per aggiungere spazi bianchi , dobbiamo solo sostituire il string_namecon a " "o ' 'entrambi funzioneranno e posizioneranno il iterableche vogliamo concatenare.

Quindi, la nostra funzione sarà simile a questa:

' '.join(my_list)

Ma cosa succede se vogliamo aggiungere un numero particolare di white spacestra i nostri elementi nel iterable?

Dobbiamo aggiungere questo:

str(number*" ").join(iterable)

qui, numbersarà un input dell'utente.

Quindi, ad esempio, se number=4.

Quindi, l'output di str(4*" ").join(my_list)sarà how are you, quindi tra ogni parola ci sono 4 spazi bianchi.



-9

Perché non aggiungi uno spazio negli elementi dell'elenco stesso, come:
list = ["how ", "are ", "you "]


Hai scritto questa risposta in un modo che la fa sembrare più appropriata sotto forma di commento. Sarebbe più vantaggioso se espandessi questa risposta per spiegare perché ciò che stai suggerendo funziona.
Andon M. Coleman

1
Questo non è funzionale nel caso in cui non si ha accesso all'elenco (ad esempio quando viene generato con input(a).split(b))
TheSola10

non dovremmo cambiare le stringhe interne perché ci causa la perdita di spazio
Deepak Yadav
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.