Pourquoi est-lambda demandant 2 arguments en dépit d'être donné 2 arguments?

C'est mon code:

filter(lambda n,r: not n%r,range(10,20))

J'obtiens l'erreur:

TypeError: <lambda>() takes exactly 2 arguments (1 given)

Alors j'ai essayé:

foo=lambda n,r:not n%r

Qui a bien fonctionné. J'ai donc pensé que cela va fonctionner:

bar=filter(foo,range(10,20))

mais encore une fois:

TypeError: <lambda>() takes exactly 2 arguments (1 given)

Quelque chose de similaire se produit pour la carte ainsi. Mais réduire fonctionne très bien. Ce que je fais mal? Suis-je manque quelque chose de crucial nécessaires à l'utilisation de filtre ou de la carte?

filter() passe un argument unique de votre lambda, quand il s'attend à deux. À l'aide d'une variable ne vous laisseront pas de les contourner.

OriginalL'auteur ritratt | 2012-10-05