Como faço para converter uma lista em uma string com espaços em Python?

94

Como posso converter uma lista em uma string separada por espaço em Python?

Por exemplo, quero converter esta lista:

my_list = [how,are,you]

Na corda "how are you"

Os espaços são importantes. Não quero obter howareyouo que tenho com minha tentativa até agora de usar

"".join(my_list)
user1653402
fonte
19
Protip: Não use listcomo um nome de variável.
Tim Pietzcker,

Respostas:

197
" ".join(my_list)

você precisa se juntar com um espaço, não uma string vazia ...

Joran Beasley
fonte
7
É por isso que gosto de Python em códigos assim. Tão simples.
Josh
e se tivermos string neste formato list = ['how ', 'are ', 'you '] , como converter isso em lista.
Muhammad Taqi de
1
@MuhammadTaqi então apenas retire o elemento be4 juntando ..." ".join([i.strip() for i in my_list)
JACK ZHANG
17

Vou lançar isso como uma alternativa apenas por diversão, embora seja praticamente inútil quando comparado com " ".join(my_list)cordas. Para não strings (como uma matriz de ints), isso pode ser melhor:

" ".join(str(item) for item in my_list)
Polaris
fonte
7

Para Non String list, podemos fazer assim também

" ".join(map(str, my_list))
Athar
fonte
2

Portanto, para obter a saída desejada, devemos primeiro saber como a função funciona.

A sintaxe do join()método, conforme descrito na documentação do Python, é a seguinte:

string_name.join(iterable)

Coisas a serem observadas:

  • Ele retorna um stringconcatenado com os elementos de iterable. O separador entre os elementos sendo o string_name.
  • Qualquer valor não string no iterableirá gerar umTypeError

Agora, para adicionar espaços em branco , precisamos apenas substituir o string_namepor um " "ou ' 'ambos irão funcionar e colocar o iterableque queremos concatenar.

Portanto, nossa função será mais ou menos assim:

' '.join(my_list)

Mas, e se quisermos adicionar um determinado número de white spacesentre nossos elementos no iterable?

Precisamos adicionar isto:

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

aqui, numberserá uma entrada do usuário.

Então, por exemplo, se number=4.

Então, a saída de str(4*" ").join(my_list)será how are you, portanto, entre cada palavra, há 4 espaços em branco.

Abhay Tiwari
fonte
1

"".join([i for i in my_list])

Isso deve funcionar exatamente como você pediu!

Abhishek Thulasi
fonte
0

você pode iterar para fazer isso

my_list = ['how', 'are', 'you']
my_string = " "
for a in my_list:
    my_string = my_string + ' ' + a
print(my_string)

saída é

 how are you

você pode tirá-lo para obter

how are you

como isso

my_list = ['how', 'are', 'you']
my_string = " "
for a in my_list:
    my_string = my_string + ' ' + a
print(my_string.strip())

saif-py
fonte
-9

Por que você não adiciona um espaço nos itens da própria lista, como:
list = ["how ", "are ", "you "]

Anônimo
fonte
Você escreveu esta resposta de uma forma que parece mais apropriada na forma de um comentário. Seria mais benéfico se você expandisse esta resposta para explicar por que o que você está sugerindo funciona.
Andon M. Coleman
1
Isso não funciona em um caso em que você não tem acesso à lista (por exemplo, quando gerada com input(a).split(b))
TheSola10
não devemos alterar as strings internas porque isso nos causa perda de espaço
Deepak Yadav