Necesito unirme a una lista de artículos. Muchos de los elementos de la lista son valores enteros devueltos por una función; es decir,
myList.append(munfunc())
¿Cómo debo convertir el resultado devuelto en una cadena para unirlo con la lista?
¿Debo hacer lo siguiente para cada valor entero:
myList.append(str(myfunc()))
¿Hay alguna forma más pitónica de resolver problemas de lanzamiento?
Respuestas:
Llamar
str(...)
es la forma pitónica 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 convertirlos uno por uno en un ciclo for y unirlos con
,
:fuente
No hay nada de malo en pasar enteros a str. Una razón por la que no puede hacer esto es que se supone que myList es realmente una lista de enteros, por ejemplo, sería razonable sumar los valores de la lista. En ese caso, no pase sus entradas a str antes de agregarlas a myList. Si termina sin convertir en cadenas antes de agregar, puede construir una cadena grande haciendo algo como
fuente
str
? Considere la posibilidad de que necesite agregar algo de lógica difusa a su analizador ;-)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 .
Después de convertir la lista en cadena que puede utilizar sencilla unirse a la función a la lista de combinar en una sola cadena
fuente
El método anterior es la forma más fácil y general de convertir la lista en una cadena. otro método corto es
fuente
Hay tres formas de hacer esto.
digamos que tienes una lista de entradas
"-".join(str(n) for n in my_list)
"-".join([str(n) for n in my_list])
"-".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 recomendaría usar
"-".join(map(str, my_list))
fuente
Tu problema es bastante claro. Quizás esté buscando extender, para agregar todos los elementos de otra lista a una lista existente:
Si desea convertir enteros en cadenas, use str () o interpolación de cadenas, posiblemente combinado con una comprensión de lista, es decir
Todo esto se considera pitónico (bueno, una expresión generadora es aún más pitónica, pero sigamos siendo simples y en el tema)
fuente
Por ejemplo:
En cuanto a mí, quiero agregar un
str
antes de cada lista de str:O lista única:
fuente
Tal vez no necesite números como cadenas, solo haga lo siguiente:
Más tarde, si lo necesita como cadena, puede hacerlo con cadena o con formato de cadena:
print "Vastaus5 = %s" % functaulu[5]
fuente
¿Cómo es que a nadie parece gustarle
repr
?Python 3.7.2:
Sin embargo, tenga cuidado, es una representación explícita. Un ejemplo muestra:
Más información en pydocs-repr
fuente