Passer plusieurs arguments dans les fonctions Lambda en Python

Vaibhav Vaibhav 22 janvier 2022
  1. Fonctions Lambda en Python
  2. Passer plusieurs arguments dans les fonctions Lambda
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]
Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.

Article connexe - Python Function

Article connexe - Python Lambda Function