2010-08-28 8 views
163

Necesito unirme a una lista de elementos. Muchos de los elementos en la lista son valores enteros devueltos por una función. es decir:Unirme a una lista que tiene valores enteros con Python

myList.append(munfunc()) 

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

¿Es necesario hacer lo siguiente para cada valor entero:

myList.append(str(myfunc()) 

¿Hay una manera más Pythonic para resolver los problemas de fundición?

+3

Por favor, asegúrese de que utiliza la buena gramática que la gente pueda entender lo que está pidiendo y/o volver a leer su pregunta antes de su publicación. – allyourcode

Respuesta

322

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, puede mantenerlo como una lista de enteros y solo convertir los enteros en cadenas cuando necesite mostrarlos. Por ejemplo, si usted tiene una lista de números enteros entonces usted puede hacer esto:

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

No estoy realmente seguro de lo que entendemos por "unir", debido a que la gramática que utiliza en su pregunta es bastante malo, pero si entiendo tu pregunta correctamente, 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 una lista de enteros, p. sería razonable sumar los valores en la lista. En ese caso, no pase sus ints a str antes de agregarlos a myList. Si al final no convertir a las cadenas antes de añadir, se puede construir una cadena grande haciendo algo como

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

Es de suponer que el inglés no es su lengua materna. ¿No está seguro de su deseo de unirse a una lista de elementos, muchos de los cuales está convirtiendo en 'str'? Considere la posibilidad de que necesite agregar algo de lógica difusa a su analizador sintáctico ;-) –

+3

@John. Consideré eso, pero si él es bueno en inglés, quería presionarlo suavemente para que elevara el nivel de inglés en SO a su nivel normal Creo que mi respuesta entretiene varias interpretaciones y situaciones en las que podría estar. – allyourcode

1

Su problema es bastante clara. Tal vez usted 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 enteros a cadenas, el uso str() o la interpolación de cadenas, posiblemente combinado con una lista por 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 (bueno, una expresión generadora es aún más Pythonic pero mantengamos simple y en el tema)

0

Tal vez usted no necesita los números como cadenas, acaba de hacer:

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

Más tarde, si lo necesita como cadena se puede hacer con una cuerda o con la cadena de formato: función

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

22

mapa en Python se puede utilizar. Toma dos argumentos. El primer argumento es la función que se debe usar 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 cadena que puede utilizar sencilla unirse a función a la lista de combinar en una sola cadena

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

método anterior es la forma más fácil y más general a la lista de conversión en una cuerda. otro método corto es-

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