Concatenar elemento en la lista de cadenas

¿Existe una forma más sencilla de concatenar elementos de cadena en una lista en una sola cadena?

¿Puedo usar la función str.join() para unir elementos en la lista?

Por ejemplo, esta es la entrada ['this','is','a','sentence'] y esta es la salida deseada this-is-a-sentence

 sentence = ['this','is','a','sentence'] sent_str = "" for i in sentence: sent_str += str(i) + "-" sent_str = sent_str[:-1] print sent_str 

Usar join

 >>> sentence = ['this','is','a','sentence'] >>> '-'.join(sentence) 'this-is-a-sentence' 

Una forma más genérica de convertir listas de python en cadenas sería:

 >>> my_lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] >>> my_lst_str = ''.join(map(str, my_lst)) >>> print(my_lst_str) '12345678910' 

Es muy útil para los principiantes saber por qué unirse es un método de cadena.

Es muy extraño al principio, pero muy útil después de esto.

El resultado de la unión es siempre una cadena, pero el objeto a unirse puede ser de muchos tipos (generadores, lista, tuplas, etc.)

.join es más rápido porque asigna memoria solo una vez. Mejor que la concatenación clásica. explicación extendida

Una vez que lo aprendes, es muy cómodo y puedes hacer trucos como este para agregar paréntesis.

  >>> ",".join("12345").join(("(",")")) '(1,2,3,4,5)' >>> lista=["(",")"] >>> ",".join("12345").join(lista) '(1,2,3,4,5)' 

Aunque la respuesta de @Burhan Khalid es buena, creo que es más comprensible de esta manera:

 from str import join sentence = ['this','is','a','sentence'] join(sentence, "-") 

El segundo argumento para join () es opcional y por defecto es “”.

EDITAR: Esta función fue eliminada en Python 3

También podemos utilizar la funcionalidad incorporada de python de reduce: –

desde functools importar reducir

frase = [‘este’, ‘es’, ‘a’, ‘oración’]

out_str = str (reduce (lambda x, y: x + “-” + y, oración))

imprimir (out_str)

Espero que esto ayude 🙂