Únete a una lista de elementos con diferentes tipos como cadena en Python

Necesito unirme a una lista de artículos. Muchos de los elementos de la lista son valores enteros devueltos desde una función. es decir:

myList.append(munfunc()) 

¿Cómo debo convertir el resultado devuelto en una cadena para unirlo a la lista?

¿Debo hacer lo siguiente para cada valor entero:

 myList.append(str(myfunc()) 

¿Hay alguna forma más pythonica de resolver problemas de casting?

Llamar a str(...) es la forma Pythonic de convertir algo en una cadena.

Es posible que desee considerar por qué quiere una lista de cadenas. En su lugar, podría mantenerlo como una lista de enteros y solo convertir los enteros en cadenas cuando necesite mostrarlos. Por ejemplo, si tiene una lista de enteros, puede hacer esto:

 print ', '.join(str(x) for x in list_of_ints) 

No estoy realmente seguro de lo que quiere decir con “unirse”, porque la gramática que usa en su pregunta es bastante mala, pero si entiendo su pregunta correctamente, no hay nada de malo en pasar los números enteros a str. Una razón por la que no puede hacer esto es que myList realmente se supone que es una lista de enteros, por ejemplo, sería razonable sumr los valores de la lista. En ese caso, no pase sus pasos a str antes de agregarlos a myList. Si terminas de no convertir a cadenas antes de agregar, puedes construir una cadena grande haciendo algo como

 ', '.join(map(str, myList)) 

Se puede utilizar la función de mapa en python. Se necesitan dos argumentos. El primer argumento es la función que debe usarse para cada elemento de la lista. El segundo argumento es el iterable .

 a = [1, 2, 3] map(str, a) ['1', '2', '3'] 

Después de convertir la lista en una cadena, puede usar la función de unión simple para combinar la lista en una sola cadena

 a = map(str, a) ''.join(a) '123' 
 a=[1,2,3] b=[str(x) for x in a] print b 

El método anterior es la forma más sencilla y general de convertir una lista en una cadena. otro método corto es-

 a=[1,2,3] b=map(str,a) print b 

Hay tres maneras de hacer esto.

Digamos que tienes una lista de ints

 my_list = [100,200,300] 
  1. "-".join(str(n) for n in my_list)
  2. "-".join([str(n) for n in my_list])
  3. "-".join(map(str, my_list))

Sin embargo, como se indica en el ejemplo de timeit en el sitio web de python en https://docs.python.org/2/library/timeit.html, usar un mapa es más rápido. Así que te recomiendo que "-".join(map(str, my_list))

Tu problema es bastante claro. Quizás esté buscando extender, para agregar todos los elementos de otra lista a una lista existente:

 >>> x = [1,2] >>> x.extend([3,4,5]) >>> x [1, 2, 3, 4, 5] 

Si desea convertir números enteros en cadenas, use str () o interpolación de cadenas, posiblemente combinada con una lista de comprensión, es decir

 >>> x = ['1', '2'] >>> x.extend([str(i) for i in range(3, 6)]) >>> x ['1', '2', '3', '4', '5'] 

Todo esto se considera pythonic (ok, una expresión generadora es aún más pythonic, pero seamos sencillos y sobre el tema)

Tal vez usted no necesita números como cadenas, solo haga:

 functaulu = [munfunc(arg) for arg in range(loppu)] 

Más tarde, si lo necesita como una cadena, puede hacerlo con una cadena o con una cadena de formato:

print "Vastaus5 = %s" % functaulu[5]

Por ejemplo:

 lst_points = [[313, 262, 470, 482], [551, 254, 697, 449]] lst_s_points = [" ".join(map(str, lst)) for lst in lst_points] print lst_s_points # ['313 262 470 482', '551 254 697 449'] 

En cuanto a mí, quiero agregar una str antes de cada lista de cadenas:

 # here o means class, other four points means coordinate print ['0 ' + " ".join(map(str, lst)) for lst in lst_points] # ['0 313 262 470 482', '0 551 254 697 449'] 

O lista única:

 lst = [313, 262, 470, 482] lst_str = [str(i) for i in lst] print lst_str, ", ".join(lst_str) # ['313', '262', '470', '482'], 313, 262, 470, 482 lst_str = map(str, lst) print lst_str, ", ".join(lst_str) # ['313', '262', '470', '482'], 313, 262, 470, 482