Que se passe-t-il ici? J'essaye de créer une liste de fonctions:Problèmes Lambda Python
def f(a,b):
return a*b
funcs = []
for i in range(0,10):
funcs.append(lambda x:f(i,x))
Ceci ne fait pas ce que j'attends. Je me attends à la liste d'agir comme ceci:
funcs[3](3) = 9
funcs[0](5) = 0
Mais toutes les fonctions de la liste semblent être identiques, et établirons la valeur fixe soit 9:
funcs[3](3) = 27
funcs[3](1) = 9
funcs[2](6) = 54
Toutes les idées?
Cela devrait être functools.partial (f, i) – FogleBird
Je suis d'accord.Une application partielle est le moyen d'aller ici. –
ici partiel (f, i) signifie partiel (f, b = i) non partiel (f, a = i). ce n'est donc pas la même chose que le message original. L'application de fonction partielle 'de la droite' (http://www.gossamer-threads.com/lists/python/dev/715103) a été rejetée deux fois. – sunqiang