Python une fonction lambda
Ce qui se passe ici?
reduce(lambda x,y: x+y, [x for x in range(1,1000) if x % 3 == 0 or x % 5 == 0])
Je comprends ce que x est une itération à travers tous les nombres de 1 à 999 et de sortir ceux qui sont divisibles par 3 ou 5, mais le " lambda x,y: x+y est estompe moi.
Vous devez vous connecter pour publier un commentaire.
Ce qui est mauvais Python pour
Il simplement la somme de tous les nombres dans l'intervalle 1..999 divisible par 3 ou 5.
réduire()
s'applique la fonction donnée pour les deux premiers éléments de l'itératif, puis à la suite et l'article suivant de la itératif, et ainsi de suite. Dans cet exemple, la fonctionajoute simplement de ses opérandes.
disant
est presque la même chose que de dire
en d'autres termes
lambda
retourne une fonction qui étant donné les paramètres à gauche de la:
signe renvoie la valeur de l'expression à droite de celui-ci.À l'égard d'une fonction est cependant assez limitée, par exemple, ne permet qu'une seule expression et pas d'états sont autorisés. Ce n'est pas un problème grave cependant, car en Python, vous pouvez définir une fonction complète, même au milieu d'une autre fonction et de la place.
L'utilisation que vous affiché est cependant assez mal à propos un lambda il est inutile... Python permettrait de calculer la somme directement au lieu d'utiliser
reduce
.Aussi, par la manière, le résultat de ce calcul, il est très facile de forme fermée solution qui ne nécessite pas d'itération à tous... (indice: la somme de tous les nombres de 1 à n est
n*(n+1)/2
et la somme de tous les multiples de 5 de 5 à n est de 5*(somme de tous les nombres de 1 à n/5) ... donc ...)Un
lambda
désigne une fonction anonyme. La syntaxelambda x,y: x+y
peut être indiquée en anglais comme "déclarer un nom de fonction prenant deux paramètres nommésx
ety
. Effectuer l'opérationx+y
. La valeur de retour de cette nameless fonction du résultat de cette opération"reduce
s'applique une fonction de façon séquentielle pour les deux premiers éléments d'une liste fournie par le, puis le résultat de cette fonction et le troisième élément, et ainsi de suite. Par conséquent, le lambda dans le code fourni est utilisé par réduire à ajouter ensemble les éléments de la liste fournie, qui contiendra tous les multiples de 3 et de 5 à moins de 1000.