¿Hay una manera más simple de concatenar elementos de cadena en una lista en una sola cadena? ¿Puedo usar la str.join()
función?
Por ejemplo, esta es la entrada ['this','is','a','sentence']
y esta es la salida deseadathis-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
'-'.join(sentence)
Respuestas:
Uso
join
:fuente
sentence.join(" ")
que funcionara también, ya que la operación inversa eslist.split(" ")
. ¿Alguna idea de si esto se va a agregar a los métodos de Python para listas?list.join
sería inapropiado para una lista arbitraria. Por otro lado, el argumento destr.join
puede ser cualquier secuencia "iterable" de cadenas, no solo una lista. Lo único que tendría sentido es una función incorporadajoin(list, sep)
; hay uno en elstring
módulo (básicamente obsoleto) si realmente lo quieres.' '.join(['this', 'is', 'a', 'sentence'])
Una forma más genérica de convertir listas de Python en cadenas sería:
fuente
map(str, my_lst)
sería suficiente sin enumerar la lista =)int
pero podría ser cualquier tipo que se pueda representar como una cadena.' '.join(map(lambda x: ' $'+ str(x), my_lst))
, volvería'$1 $2 $3 $4 $5 $6 $7 $8 $9 $10'
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 unir siempre es 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.
fuente
Aunque la respuesta de @Burhan Khalid es buena, creo que es más comprensible así:
El segundo argumento para unirse () es opcional y el valor predeterminado es "".
EDITAR: esta función se eliminó en Python 3
fuente
Podemos especificar cómo debemos unir la cadena. En lugar de '-', podemos usar ''
fuente
También podemos usar la función de reducción de Python :
fuente
join
?fuente