¿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)

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 ...


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)

7

Para Non String también listpodemos hacer esto

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

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.



-9

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


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.