¿Qué está pasando aquí? Estoy tratando de crear una lista de funciones:Python Lambda Problems
def f(a,b):
return a*b
funcs = []
for i in range(0,10):
funcs.append(lambda x:f(i,x))
Esto no está haciendo lo que esperaba. Yo esperaría que la lista para actuar de esta manera:
funcs[3](3) = 9
funcs[0](5) = 0
Pero todas las funciones de la lista parecen ser idénticos, y estar fijándose el valor fijo para ser 9:
funcs[3](3) = 27
funcs[3](1) = 9
funcs[2](6) = 54
¿Alguna idea?
Eso debería ser functools.partial (f, i) – FogleBird
Estoy de acuerdo.La aplicación parcial es el camino a seguir aquí. –
aquí parcial (f, i) significa parcial (f, b = i) no parcial (f, a = i). así que no es lo mismo que la publicación original. La aplicación de función parcial 'de la derecha' (http://www.gossamer-threads.com/lists/python/dev/715103) ha sido rechazada dos veces. – sunqiang