2010-10-06 13 views

Respuesta

5

Una forma de hacer esto es utilizar _:

[foo() for _ in range(10)] 

Esto significa exactamente lo mismo, pero, por convención, el uso de _ indica al lector que el índice no se utiliza realmente para nada.

Presumiblemente foo() devuelve algo diferente cada vez que lo llamas. Si no lo hace, y se devuelve el mismo cada vez, a continuación, se puede:

[foo()] * 10 

para replicar el resultado de llamar foo() una vez, 10 veces en una lista.

-1

De ninguna manera más elegante, pero:

[x() for x in [foo]*10] 

creo que más allá de que tiene que ir a Ruby;)

-2

map(lambda _ : foo(), range(10))

aunque esto oficios su problema con un iterador sentido i con un nuevo argumento sin sentido para la expresión lambda.

0

map sería bueno si foo() tomó una discusión, pero no es así. Así que en lugar, crear una lambda ficticia que toma un argumento entero, pero sólo las llamadas foo():

map(lambda i:foo(), range(10)) 

Si usted está en Python 3.x, mapa muestra un iterador en lugar de una lista - acaba de construir una lista con it:

list(map(lambda i:foo(), range(10))) 
+0

¿Vota? ¿Cómo? – PaulMcG

Cuestiones relacionadas