Geekflare est soutenu par notre public. Nous pouvons gagner des commissions d'affiliation en achetant des liens sur ce site.
In Développement Dernière mise à jour : 3 juillet 2023
Partager sur:
Scanner de sécurité des applications Web Invicti – la seule solution qui offre une vérification automatique des vulnérabilités avec Proof-Based Scanning™.

Dans ce didacticiel, vous apprendrez tout sur les fonctions lambda en Python - de la syntaxe pour définir les fonctions lambda aux différents cas d'utilisation avec des exemples de code.

En Python, les lambdas sont anonyme fonctions qui ont une syntaxe concise et peuvent être utilisées avec d'autres fonctions intégrées utiles. À la fin de ce didacticiel, vous aurez appris à définir les fonctions lambda et à quel moment vous devriez envisager de les utiliser par rapport aux fonctions Python classiques.

Commençons!

Python Lambda Function: Syntax and Examples

Voici la syntaxe générale pour définir une fonction lambda en Python :

lambda parameter(s):return value

Dans la syntaxe générale ci-dessus :

  • lambda est le mot-clé que vous devez utiliser pour définir une fonction lambda, suivi d'un ou plusieurs paramètres que la fonction doit prendre.
  • Il y a deux-points séparant les paramètres et le valeur de retour.

💡 Lors de la définition d'une fonction lambda, vous devez vous assurer que la valeur de retour est calculée en évaluant une expression qui s'étend sur une seule ligne de code. Vous comprendrez mieux cela lorsque nous coderons des exemples.

Exemples de fonctions Python Lambda

La meilleure façon de comprendre les fonctions lambda est de commencer par réécrire les fonctions Python standard en tant que fonctions lambda.

👩🏽‍💻 Vous pouvez coder dans un REPL Python ou dans L'éditeur Python en ligne de Geekflare.

#1. Considérons la fonction suivante square(), qui prend un nombre, num, comme argument et renvoie le carré du nombre.

def square(num):
    return num*num

Vous pouvez appeler la fonction avec des arguments et vérifier qu'elle fonctionne correctement.

>>> square(9)
81
>>> square(12)
144

Vous pouvez attribuer cette expression lambda à un nom de variable, par exemple, square1 pour rendre la définition de la fonction plus concise : square1 = lambda num: num*num puis appelez le square1 fonction avec n'importe quel nombre comme argument. Cependant, nous savons que les lambdas sont des fonctions anonymes, vous devez donc éviter de les affecter à une variable.

Pour la fonction square(), le paramètre est num et la valeur de retour est num*num. Une fois que nous les avons identifiés, nous pouvons les brancher dans l'expression lambda et l'appeler avec un argument, comme indiqué :

>>> (lambda num: num*num)(2)
4

C'est la notion de Expression de fonction immédiatement appelée, où nous appelons une fonction juste après l'avoir définie.

#2. Ensuite, réécrivons une autre fonction simple add() qui prend en chiffres, num1 et num2, et renvoie leur somme, num1 + num2.

def add(num1,num2):
    return num1 + num2

Appelons le add() fonction avec deux nombres comme arguments :

>>> add(4,3)
7
>>> add(12,5)
17
>>> add(12,6)
18

Dans ce cas, num1 et num2 sont les deux paramètres et la valeur de retour est num1 + num2.

>>> (lambda num1, num2: num1 + num2)(3,7)
10

Les fonctions Python peuvent également prendre des valeurs par défaut pour les paramètres. Modifions la définition du add() fonction et définissez la valeur par défaut de la num2 paramètre à 10.

def add(num1, num2=10):
    return num1 + num2

Dans les appels de fonction suivants :

  • Dans le premier appel de fonction, la valeur de num1 est 1 et la valeur de num2 est 3. Lorsque vous transmettez la valeur pour num2 dans l'appel de fonction, cette valeur est utilisée ; la fonction renvoie 4.
  • Cependant, si vous ne passez qu'un seul argument (num1 est 7), la valeur par défaut de 10 est utilisée pour num2; la fonction renvoie 17.
>>> add(1,3)
4
>>> add(7)
17

Lors de l'écriture de fonctions qui prennent des valeurs par défaut pour certains paramètres en tant qu'expressions lambda, vous pouvez spécifier la valeur par défaut lors de la définition des paramètres.

>>> (lambda num1, num2 = 10: num1 + num2)(1)
11

When Should You Use Lambda Functions in Python?

Maintenant que vous avez appris les bases des fonctions lambda en Python, voici quelques cas d'utilisation :

  • Lorsque vous avez une fonction dont l'expression de retour est une seule ligne de code et que vous n'avez pas besoin de référencer la fonction ailleurs dans le même module, vous pouvez utiliser les fonctions lambda. Nous avons également codé quelques exemples pour comprendre cela.
  • Vous pouvez utiliser les fonctions lambda lorsque vous utilisez des fonctions intégrées, telles que map(), filter() et reduce().
  • Les fonctions Lambda peuvent être utiles pour trier les structures de données Python telles que les listes et les dictionnaires.

How to Use Python Lambda with Built-In Functions

# 1. Utiliser Lambda avec map()

Les map() fonction prend un itérable et une fonction et applique la fonction à chaque élément de l'itérable, comme indiqué :

python-lambda-avec-carte

Créons un nums lister et utiliser le map() fonction pour créer une nouvelle liste qui contient le carré de chaque nombre dans le nums liste. Notez l'utilisation de la fonction lambda pour définir l'opération de mise au carré.

>>> nums = [4,5,6,9]
>>> list(map(lambda num:num*num,nums))
[16, 25, 36, 81]

le map() fonction renvoie un objet de carte, nous devrions le convertir en liste.

▶️ Découvrez ce tutoriel sur fonction map() en Python.

# 2. Utiliser Lambda avec filter()

Définissons nums, une liste de nombres :

>>> nums = [4,5,6,9]

Supposons que vous souhaitiez filtrer cette liste et ne conserver que les nombres impairs.

Vous pouvez utiliser la fonction intégrée de Python filter() la fonction.

Les filter() la fonction prend dans un condition et le itérable: filter(condition, iterable). Le résultat contient uniquement les éléments de l'itérable d'origine qui satisfont à la condition. Vous pouvez convertir l'objet renvoyé en un itérable Python tel que list.

python-lambda-avec-filtre

Pour filtrer tous les nombres pairs, nous ne retiendrons que les nombres impairs. Donc l'expression lambda devrait être lambda num: num%2!=0. La quantité num%2 est le reste quand num est divisé par 2.

  • num%2!=0 is True chaque fois que num est étrange, et
  • num%2!=0 is False chaque fois que num est même.
>>> nums = [4,5,6,9]
>>> list(filter(lambda num:num%2!=0,nums))
[5, 9]

# 3. Utilisation de Lambda avec reduce()

Les reduce() fonction prend un itérable et une fonction. Il réduit l'itérable en appliquant la fonction de manière itérative sur les éléments de l'itérable.

python-lambda-avec-réduire

Pour utiliser la reduce() fonction, vous devrez l'importer à partir de la fonction intégrée de Python functools module:

>>> from functools import reduce

Utilisons la fonction reduce() pour calculer la somme de tous les numéros de la liste des numéros. Nous définissons une expression lambda : lambda num1,num2:num1+num2, comme fonction de somme réductrice.

L'opération de réduction se déroulera comme ceci : f(f(f(4,5),6),9) = f(f(9,6),9) = f(15,9) = 24. Ici, f est l'opération de sommation sur deux éléments de la liste, définie par la fonction lambda.

>>> from functools import reduce
>>> nums = [4,5,6,9]
>>> reduce(lambda num1,num2:num1+num2,nums)
24

Python Lambda Functions to Customize Sorting

En plus d'utiliser des fonctions lambda avec des fonctions Python intégrées, telles que map(), filter()et au reduce(), vous pouvez également les utiliser pour personnaliser les fonctions et méthodes intégrées utilisées pour le tri.

img

# 1. Tri des listes Python

Lorsque vous travaillez avec des listes Python, vous devrez souvent les trier en fonction de certains critères de tri. Pour trier les listes Python en place, vous pouvez utiliser la fonction intégrée sort() méthode sur eux. Si vous avez besoin d'une copie triée de la liste, vous pouvez utiliser le sorted() la fonction.

La syntaxe pour utiliser Python sorted() la fonction est sorted(iterable, key=...,reverse= True | False).

- L' key Le paramètre est utilisé pour personnaliser le tri.
- L' reverse paramètre peut être réglé sur True or False; La valeur par défaut est False.

Lors du tri de listes de nombres et de chaînes, le tri par défaut s'effectue respectivement par ordre croissant et par ordre alphabétique. Cependant, vous pouvez parfois souhaiter définir un critère personnalisé pour le tri.

Considérez la liste suivante fruits. Supposons que vous souhaitiez obtenir une copie triée de la liste. Vous devez trier les chaînes en fonction du nombre d'occurrences de 'p' qu'elles contiennent - dans l'ordre décroissant.

>>> fruits = ['apple','pineapple','grapes','mango']

Il est temps d'utiliser l'option key paramètre. Une chaîne est un itérable en Python et pour obtenir le nombre d'occurrences d'un caractère qu'il contient, vous pouvez utiliser la fonction intégrée .count() méthode. Nous avons donc fixé le key à lambda x:x.count('p') afin que le tri soit basé sur le nombre de fois que 'p' apparaît dans la chaîne.

>>> fruits = ['apple','pineapple','grapes','mango']
>>> sorted(fruits,key=lambda x:x.count('p'),reverse=True)
['pineapple', 'apple', 'grapes', 'mango']

Dans cet exemple:

  • Les key trier est le nombre d'occurrences du caractère 'p', et il est défini comme une expression lambda.
  • Comme nous avons défini le reverse paramètre True, le tri s'effectue dans l'ordre décroissant du nombre d'occurrences de 'p'.

Dans le fruits , 'pineapple' contient 3 occurrences de 'p', et les chaînes 'apple', 'grapes' et 'mango' contiennent respectivement 2, 1 et 0 occurrences de 'p'.

Comprendre le tri stable

Prenons un autre exemple. Pour le même critère de tri, nous avons redéfini le fruits liste. Ici, 'p' apparaît dans les chaînes 'apple' et 'grapes' respectivement deux fois et une fois. Et cela ne se produit jamais dans les chaînes 'mangue' et 'melon'.

>>> fruits = ['mango','apple','melon','grapes']
>>> sorted(fruits,key=lambda x:x.count('p'),reverse=True)
['apple', 'grapes', 'mango', 'melon']

Dans la liste de sortie, 'mangue' vient avant 'melon' même s'ils n'ont pas tous les deux le caractère 'p'. Mais pourquoi est-ce le cas? La sorted() la fonction effectue un tri stable ; ainsi, lorsque le nombre de 'p' est égal pour deux chaînes, l'ordre des éléments dans l'original fruits liste est conservée.

Comme exercice rapide, échangez les positions de « mangue » et de « melon » dans le fruits list, triez la liste en fonction du même critère et observez la sortie.

▶️ En savoir plus sur tri des listes Python.

# 2. Trier un dictionnaire Python

Vous pouvez également utiliser des lambdas lors du tri des dictionnaires Python. Considérez le dictionnaire suivant price_dict qui contient les articles et leurs prix.

>>> price_dict = {
... 'Milk':10,
... 'Honey':15,
... 'Bread':7,
... 'Candy':3
... }

Pour obtenir les paires clé-valeur d'un dictionnaire sous forme de liste de tuples, vous pouvez utiliser la méthode de dictionnaire intégrée .items():

>>> price_dict_items = price_dict.items()
dict_items([('Milk', 10), ('Honey', 15), ('Bread', 7), ('Candy', 3)])

En Python, tous les itérables : listes, tuples, chaînes, etc., suivent l'indexation zéro. Ainsi, le premier élément est à l'index 0, le second à l'index 1, et ainsi de suite.

Nous aimerions trier par la valeur, qui est le prix de chaque article du dictionnaire. Dans chaque tuple du price_dict_items liste, l'élément à l'index 1 est le prix. Nous avons donc fixé le key à lambda x:x[1] car il utilisera l'élément à l'index 1, le prix, pour trier le dictionnaire.

>>> dict(sorted(price_dict_items,key=lambda x:x[1]))
{'Candy': 3, 'Bread': 7, 'Milk': 10, 'Honey': 15}

Dans la sortie, les éléments du dictionnaire ont été triés par ordre croissant de prix : de "Candy", au prix de 3 unités, à "Honey", au prix de 15 unités.

▶️ Pour en savoir plus, consultez ce guide détaillé sur trier un dictionnaire Python par clé et valeur.

résumer

Et voila! Vous avez appris à définir des fonctions lambda et à les utiliser efficacement avec d'autres fonctions Python intégrées. Voici un résumé des principaux plats à emporter :

  • En Python, les lambdas sont fonctions anonymes qui peut prendre plusieurs arguments et renvoyer une valeur ; l'expression à évaluer pour générer cette valeur de retour doit être une ligne de code. Ils peuvent être utilisés pour rendre les petites définitions de fonctions plus concises. 
  • Pour définir la fonction Lambda, vous pouvez utiliser la syntaxe : Paramètre(s) lambda : valeur de retour.
  • Certains des cas d'utilisation importants incluent leur utilisation avec map(), filter()et au reduce() fonctions et comme paramètre clé pour personnaliser le tri des itérables Python.

Ensuite, apprenez à exécuter division d'étage en Python. Aussi, renseignez-vous sur la fonction de sommeil python.

  • Bala Priya C
    Auteur
    Bala Priya est un développeur et rédacteur technique indien avec plus de trois ans d'expérience dans le domaine de la rédaction de contenu technique. Elle partage son apprentissage avec la communauté des développeurs en créant des didacticiels techniques, des guides pratiques, etc. lire la suite
Merci à nos commanditaires
Plus de bonnes lectures sur le développement
Alimentez votre entreprise
Certains des outils et services pour aider votre entreprise à se développer.
  • Invicti utilise Proof-Based Scanning™ pour vérifier automatiquement les vulnérabilités identifiées et générer des résultats exploitables en quelques heures seulement.
    Essayez Invicti
  • Web scraping, proxy résidentiel, proxy manager, web unlocker, moteur de recherche et tout ce dont vous avez besoin pour collecter des données Web.
    Essayez Brightdata
  • Monday.com est un système d'exploitation de travail tout-en-un pour vous aider à gérer les projets, les tâches, le travail, les ventes, le CRM, les opérations, workflowset plus encore.
    Essayez Monday
  • Intruder est un scanner de vulnérabilités en ligne qui détecte les failles de cybersécurité de votre infrastructure, afin d'éviter des violations de données coûteuses.
    Essayez Intruder