Elementos concatenados de una lista

Tengo una lista como l=['a', 'b', 'c'] Quiero una cadena como ‘abc’. Entonces, de hecho, el resultado es l[0]+l[1]+l[2] , que también se puede escribir como

 s = '' for i in l: s += i 

¿Hay alguna manera de hacerlo de manera más elegante?

Utilice str.join() :

 s = ''.join(l) 

La cadena en la que llama a esto se usa como delimitador entre las cadenas en l :

 >>> l=['a', 'b', 'c'] >>> ''.join(l) 'abc' >>> '-'.join(l) 'abc' >>> ' - spam ham and eggs - '.join(l) 'a - spam ham and eggs - b - spam ham and eggs - c' 

Usar str.join() es mucho más rápido que concatenar sus elementos uno por uno, ya que tiene que crear un nuevo objeto de cadena para cada concatenación. str.join() solo tiene que crear un nuevo objeto de cadena.

Tenga en cuenta que str.join() recorrerá la secuencia de entrada dos veces . Una vez para calcular qué tan grande debe ser la cadena de salida, y una vez más para construirla. Como efecto secundario, eso significa que usar una comprensión de lista en lugar de una expresión generadora es más rápido:

 slower_gen_expr = ' - '.join('{}: {}'.format(key, value) for key, value in some_dict) faster_list_comp = ' - '.join(['{}: {}'.format(key, value) for key, value in some_dict])