Passer plusieurs arguments dans les fonctions Lambda en Python
Les formes lambda ou expressions lambda sont des fonctions anonymes en Python. Ce sont des fonctions en ligne qui peuvent être créées à l’aide du mot-clé réservé lambda
en Python.
Cet article parlera des fonctions lambda en Python et apprendra à gérer plusieurs arguments qu’elles contiennent.
Fonctions Lambda en Python
Une fonction lambda comprend trois parties : le mot-clé lambda
, les paramètres ou les variables liées, et le corps de la fonction. Le corps de la fonction ne peut avoir qu’une seule expression Python car ces fonctions sont en ligne.
Ces fonctions peuvent non seulement être invoquées immédiatement, mais également utilisées comme d’autres fonctions Python classiques.
Les fonctions lambda ont la syntaxe suivante :
lambda < parameters comma seperated >: expression
Notez que l’expression dans le corps de la fonction doit renvoyer une valeur. Si l’expression ne renvoie aucune valeur, le résultat d’une fonction lambda sera une valeur None
.
Pour l’appel en ligne, nous entourons la fonction lambda de parenthèses et plaçons les valeurs des arguments à côté entre parenthèses.
Ci-dessous la syntaxe pour cela :
(lambda < parameters comma seperated > : expression) ( < parameters comma seperated > )
Pour comprendre ces fonctions lambda, créons une fonction lambda qui multiplie deux nombres. Comme nous avons expliqué que ces fonctions pouvaient être invoquées immédiatement et utilisées comme des fonctions Python normales, les exemples incluront les deux versions des fonctions lambda.
Reportez-vous au code suivant pour l’exemple de multiplication :
# Regular function calls
def multiply(a, b):
return a * b
print(multiply(1, 2))
print(multiply(10, 5))
print(multiply(10.5, 9.3))
print(multiply(0.945, -5.645))
print(multiply(1000e9, 0), end="\n\n")
# Inline invocation
print((lambda a, b: a * b)(1.1, 1.2))
print((lambda a, b: a * b)(10, 5))
print((lambda a, b: a * b)(10.5, 9.3))
print((lambda a, b: a * b)(0.945, -5.645))
print((lambda a, b: a * b)(1000e9, 0))
Production :
2
50
97.65
-5.334524999999999
0.0
1.32
50
97.65
-5.334524999999999
0.0
Pour le rendre encore plus précis, considérons trois autres exemples où nous allons filtrer les valeurs impaires d’une liste de nombres, calculer les carrés des éléments d’une liste et calculer les racines cubiques des éléments d’une liste.
Reportez-vous au code Python suivant pour le premier exemple :
x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
y = [22, 44, 66, 88, 110]
z = [78, 9797, 97, 985, 75473, 2845, 74, 9964, 652, 124, 0, 6747]
# Regular function calls
def filter_odd(a):
return a % 2 != 0
print(list(filter(filter_odd, x)))
print(list(filter(filter_odd, y)))
print(list(filter(filter_odd, z)), end="\n\n")
# Inline invocation
print((lambda array: list(filter(lambda a: a % 2 != 0, array)))(x))
print((lambda array: list(filter(lambda a: a % 2 != 0, array)))(y))
print((lambda array: list(filter(lambda a: a % 2 != 0, array)))(z))
Production :
[1, 3, 5, 7, 9]
[]
[9797, 97, 985, 75473, 2845, 6747]
[1, 3, 5, 7, 9]
[]
[9797, 97, 985, 75473, 2845, 6747]
Reportez-vous à l’extrait de code Python suivant pour le deuxième exemple :
x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
y = [22, 44, 66, 88, 110]
z = [78, 9797, 97, 985, 75473, 2845, 74, 9964, 652, 124, 0, 6747]
# Regular function calls
def square(a):
return a ** 2
print(list(map(square, x)))
print(list(map(square, y)))
print(list(map(square, z)), end="\n\n")
# Inline invocation
print((lambda array: list(map(lambda a: a ** 2, array)))(x))
print((lambda array: list(map(lambda a: a ** 2, array)))(y))
print((lambda array: list(map(lambda a: a ** 2, array)))(z))
Production :
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
[484, 1936, 4356, 7744, 12100]
[6084, 95981209, 9409, 970225, 5696173729, 8094025, 5476, 99281296, 425104, 15376, 0, 45522009]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
[484, 1936, 4356, 7744, 12100]
[6084, 95981209, 9409, 970225, 5696173729, 8094025, 5476, 99281296, 425104, 15376, 0, 45522009]
Et, reportez-vous à l’extrait de code Python suivant pour le troisième exemple :
x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
y = [22, 44, 66, 88, 110]
z = [78, 9797, 97, 985, 75473, 2845, 74, 9964, 652, 124, 0, 6747]
# Regular function calls
def square(a):
return a ** (1 / 3)
print(list(map(square, x)))
print(list(map(square, y)))
print(list(map(square, z)), end="\n\n")
# Inline invocation
print((lambda array: list(map(lambda a: a ** (1 / 3), array)))(x))
print((lambda array: list(map(lambda a: a ** (1 / 3), array)))(y))
print((lambda array: list(map(lambda a: a ** (1 / 3), array)))(z))
Production :
[1.0, 1.2599210498948732, 1.4422495703074083, 1.5874010519681994, 1.7099759466766968, 1.8171205928321397, 1.912931182772389, 2.0, 2.080083823051904, 2.154434690031884]
[2.802039330655387, 3.530348335326063, 4.04124002062219, 4.4479601811386305, 4.791419857062784]
[4.272658681697917, 21.397565740522946, 4.594700892207039, 9.949747895601458, 42.2601016892268, 14.169703309060843, 4.198336453808407, 21.518462597981888, 8.671266460286839, 4.986630952238645, 0.0, 18.896015508976504]
[1.0, 1.2599210498948732, 1.4422495703074083, 1.5874010519681994, 1.7099759466766968, 1.8171205928321397, 1.912931182772389, 2.0, 2.080083823051904, 2.154434690031884]
[2.802039330655387, 3.530348335326063, 4.04124002062219, 4.4479601811386305, 4.791419857062784]
[4.272658681697917, 21.397565740522946, 4.594700892207039, 9.949747895601458, 42.2601016892268, 14.169703309060843, 4.198336453808407, 21.518462597981888, 8.671266460286839, 4.986630952238645, 0.0, 18.896015508976504]
Passer plusieurs arguments dans les fonctions Lambda
Pour passer plusieurs arguments dans la fonction lambda, il faut mentionner tous les paramètres séparés par des virgules. Comprenons cela avec un exemple.
Nous allons créer une fonction lambda qui prend trois paramètres ; une liste et deux entiers. La fonction lambda ajoutera le premier entier et soustraira le deuxième entier de chaque élément de la liste.
Référez-vous au code Python suivant pour cela :
x1 = [1, 8, 27, 64, 125, 216, 343, 512]
x2 = 5
x3 = 6
y1 = [11, 22, 33, 44, 55, 66, 77, 88, 99]
y2 = 4
y3 = 1
z1 = [78, 9797, 97, 985, 75473, 2845, 74]
z2 = 99
z3 = 99
# Regular function calls
def modify(a, b, c):
return [x + b - c for x in a]
print(modify(x1, x2, x3))
print(modify(y1, y2, y3))
print(modify(z1, z2, z3), end="\n\n")
# Inline invocation
print((lambda a, b, c: [x + b - c for x in a])(x1, x2, x3))
print((lambda a, b, c: [x + b - c for x in a])(y1, y2, y3))
print((lambda a, b, c: [x + b - c for x in a])(z1, z2, z3))
Production :
[0, 7, 26, 63, 124, 215, 342, 511]
[14, 25, 36, 47, 58, 69, 80, 91, 102]
[78, 9797, 97, 985, 75473, 2845, 74]
[0, 7, 26, 63, 124, 215, 342, 511]
[14, 25, 36, 47, 58, 69, 80, 91, 102]
[78, 9797, 97, 985, 75473, 2845, 74]
Article connexe - Python Function
- Quitter une fonction en Python
- Arguments optionnels en Python
- Imitez la fonction ode45() en Python
- Correction de l'erreur Python Return Outside Function
- La fonction zip() en Python
- La fonction maketrans en Python