Cómo concatenar (unir) elementos de una lista en una sola cadena

Resuelto alvas asked hace 12 años • 12 respuestas

¿Cómo concateno una lista de cadenas en una sola cadena?

Por ejemplo, dado ['this', 'is', 'a', 'sentence'], ¿cómo lo consigo "this-is-a-sentence"?


Para manejar algunas cadenas en variables separadas , consulte ¿Cómo agrego una cadena a otra en Python? .

Para el proceso opuesto (crear una lista a partir de una cadena), consulte ¿Cómo divido una cadena en una lista de caracteres? o ¿ Cómo divido una cadena en una lista de palabras? según sea apropiado.

alvas avatar Sep 17 '12 12:09 alvas
Aceptado

Usar str.join:

>>> words = ['this', 'is', 'a', 'sentence']
>>> '-'.join(words)
'this-is-a-sentence'
>>> ' '.join(words)
'this is a sentence'
Burhan Khalid avatar Sep 17 '2012 05:09 Burhan Khalid

Una forma más genérica (que abarca también listas de números) de convertir una lista en una cadena 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
Aaron S avatar Dec 01 '2015 03:12 Aaron S

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 unir puede ser de muchos tipos (generadores, listas, tuplas, etc.).

.joinEs más rápido porque asigna memoria solo una vez. Mejor que la concatenación clásica (ver explicación ampliada ).

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

>>> ",".join("12345").join(("(",")"))
Out:
'(1,2,3,4,5)'

>>> list = ["(",")"]
>>> ",".join("12345").join(list)
Out:
'(1,2,3,4,5)'
Wallebot avatar May 14 '2016 13:05 Wallebot