Cómo concatenar (unir) elementos de una lista en una sola cadena
¿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.
Usar str.join
:
>>> words = ['this', 'is', 'a', 'sentence']
>>> '-'.join(words)
'this-is-a-sentence'
>>> ' '.join(words)
'this is a sentence'
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
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.).
.join
Es 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)'