Tengo el siguiente código Python que genera una lista de funciones anónimas:Generación de una lista de funciones en Python
basis = [ (lambda x: n*x) for n in [0, 1, 2] ]
print basis[0](1)
me habría esperado que fuera equivalente a
basis = [ (lambda x: 0*x), (lambda x: 1*x), (lambda x: 2*x) ]
print basis[0](1)
Sin embargo, mientras el segundo fragmento se imprime 0, que es lo que esperaría, las primeras impresiones 2. ¿Qué ocurre con el primer fragmento de código y por qué no se comporta como se esperaba?
pregunta relacionada: http://stackoverflow.com/q/139819/4279 – jfs