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
Vous devez vous connecter pour publier un commentaire.
Pourquoi utilisez-vous le 2 arguments?
filter()
etmap()
exiger une fonction à un seul argument uniquement, par exemple:De trouver les facteurs d'un nombre (vous pouvez le remplacer par lambda):
Veuillez consulter les mises à jour de réponse.
Bien sûr, vous pourriez optimiser cela il suffit de chercher jusqu'à sqrt(x), et ajouter x/n et n pour les résultats à chaque fois que
x % n == 0
. Il fera une différence lorsque les numéros sont de plus en plus.OriginalL'auteur Zaur Nasibov
Parce que
filter
en python prend un seul argument. Si vous avez besoin de définir un lambda/fonction qui prend un seul argument, si vous voulez l'utiliser dans le filtre.OriginalL'auteur Fred
Si vous exécutez une carte ou d'un filtre sur une valeur-clé le jeu, puis
ajoutez des crochets autour de (k,v), comme:
OriginalL'auteur Tagar
Votre lambda fonction prend deux arguments
n
etr
.filter
doit être appelée avec une fonction qui prend un argument et renvoieTrue
lorsque l'élément doit être conservée. Peut-être que vous vouliez définirr
oun
à l'extérieur de votre fonction lambda puis le capturer dans la fermeture.OriginalL'auteur japreiss
C'est à cause de la nature de la mise en œuvre de la fonction map, le deuxième argument de la carte, de réduire et de filtre de liste, mais la façon dont il lit et transmet les valeurs pour le premier argument de ces méthodes diffèrent, si vous voyez ci-dessous réduire la fonction par défaut choisit 2 éléments de la liste et le passe à l'lambda cependant filtre et la carte s'attend à ce qu'un élément.
OriginalL'auteur abhay dalvi