unir - eliminar varios elementos de una lista python
Concatenar elemento en la lista de cadenas (4)
¿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
Aunque share 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
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)''
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''
Usar join
>>> sentence = [''this'',''is'',''a'',''sentence'']
>>> ''-''.join(sentence)
''this-is-a-sentence''