¿Cómo convierto una lista en una cadena con espacios en Python?

93

¿Cómo puedo convertir una lista en una cadena separada por espacios en Python?

Por ejemplo, quiero convertir esta lista:

my_list = [how,are,you]

En la cuerda "how are you"

Los espacios son importantes. No quiero conseguir lo howareyouque he hecho con mi intento hasta ahora de usar

"".join(my_list)
usuario1653402
fuente
18
Sugerencia: no lo use listcomo nombre de variable.
Tim Pietzcker

Respuestas:

196
" ".join(my_list)

necesitas unirte con un espacio, no una cadena vacía ...

Joran Beasley
fuente
7
Un código como este es el motivo por el que me gusta Python. Tan sencillo.
Josh
¿Qué pasa si tenemos una cadena en este formato, list = ['how ', 'are ', 'you '] entonces cómo convertir esto en una lista?
Muhammad Taqi
1
@MuhammadTaqi luego simplemente quita el elemento be4 que se une ..." ".join([i.strip() for i in my_list)
JACK ZHANG
17

Incluiré esto como una alternativa solo por el gusto de hacerlo, aunque es bastante inútil en comparación con las " ".join(my_list)cadenas. Para las que no son cadenas (como una matriz de entradas), esto puede ser mejor:

" ".join(str(item) for item in my_list)
estrella polar
fuente
7

Para Non String también listpodemos hacer esto

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

Entonces, para lograr el resultado deseado, primero debemos saber cómo funciona la función.

La sintaxis del join()método como se describe en la documentación de Python es la siguiente:

string_name.join(iterable)

Cosas a tener en cuenta:

  • Devuelve un stringconcatenado con los elementos de iterable. El separador entre los elementos es el string_name.
  • Cualquier valor que no sea una cadena en el iterablegenerará unTypeError

Ahora, para agregar espacios en blanco , solo necesitamos reemplazar el string_namecon uno " "o ' 'ambos funcionarán y colocar el iterableque queremos concatenar.

Entonces, nuestra función se verá así:

' '.join(my_list)

Pero, ¿qué pasa si queremos agregar un número particular de white spacesentre nuestros elementos en el iterable?

Necesitamos agregar esto:

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

aquí, numberserá una entrada del usuario.

Entonces, por ejemplo si number=4.

Entonces, la salida de str(4*" ").join(my_list)será how are you, por lo que entre cada palabra hay 4 espacios en blanco.

Abhay Tiwari
fuente
1

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

¡Esto debería funcionar como lo pediste!

Abhishek Thulasi
fuente
-9

¿Por qué no agrega un espacio en los elementos de la lista, como:
list = ["how ", "are ", "you "]

Anónimo
fuente
Ha escrito esta respuesta de manera que parezca más apropiada en forma de comentario. Sería más beneficioso si ampliara esta respuesta para explicar por qué funciona lo que sugiere.
Andon M. Coleman
1
Esto no es funcional en un caso en el que no tiene acceso a la lista (por ejemplo, cuando se genera con input(a).split(b))
TheSola10
no debemos cambiar las cadenas internas porque nos causan pérdida de espacio
Deepak Yadav