"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment utiliser les fonctions Lambda en Python

Comment utiliser les fonctions Lambda en Python

Publié le 2024-11-15
Parcourir:780

How to Use Lambda Functions in Python

Les fonctions Lambda en Python sont un moyen puissant de créer de petites fonctions anonymes à la volée. Ces fonctions sont généralement utilisées pour des opérations courtes et simples pour lesquelles la surcharge d'une définition complète de fonction serait inutile.

Alors que les fonctions traditionnelles sont définies à l'aide du mot-clé def, les fonctions Lambda sont définies à l'aide du mot-clé lambda et sont directement intégrées dans les lignes de code. En particulier, ils sont souvent utilisés comme arguments pour les fonctions intégrées. Ils permettent aux développeurs d'écrire du code propre et lisible en éliminant le besoin de définitions de fonctions temporaires.

Dans cet article, nous aborderons ce que font les fonctions Lambda et leur syntaxe. Nous fournirons également quelques exemples et bonnes pratiques pour les utiliser, et discuterons de leurs avantages et inconvénients.

Conditions préalables

Les fonctions Lambda font partie de Python depuis la version 2.0, vous aurez donc besoin de :

  • Version Python minimale : 2.0.
  • Version Python recommandée : 3.10 ou version ultérieure.

Dans ce didacticiel, nous verrons comment utiliser les fonctions Lambda avec la bibliothèque Pandas : une bibliothèque d'analyse et de manipulation de données open source rapide, puissante, flexible et facile à utiliser. Si vous ne l'avez pas installé, exécutez ce qui suit :

pip install pandas

Syntaxe et bases des fonctions Lambda pour Python

Tout d'abord, définissons la syntaxe que les développeurs doivent utiliser pour créer des fonctions Lambda.

Une fonction Lambda est définie à l'aide du mot-clé lambda, suivi d'un ou plusieurs arguments et d'une expression :

lambda arguments: expression

Imaginons que nous souhaitions créer une fonction Lambda qui additionne deux nombres :

add = lambda x, y: x   y

Exécutez ce qui suit :

result = add(3, 5)
print(result)

Cela donne :

8

Nous avons créé une fonction anonyme qui prend deux arguments, x et y. Contrairement aux fonctions traditionnelles, les fonctions Lambda n'ont pas de nom : c'est pourquoi nous les disons « anonymes ».

De plus, nous n'utilisons pas l'instruction return, comme nous le faisons dans les fonctions Python classiques. On peut donc utiliser la fonction Lambda à volonté : elle peut être imprimée (comme nous l'avons fait dans ce cas), stockée dans une variable, etc.

Voyons maintenant quelques cas d'utilisation courants des fonctions Lambda.

Cas d'utilisation courants des fonctions Lambda

Les fonctions Lambda sont particulièrement utilisées dans les situations où nous avons besoin d'une fonction temporairement simple. En particulier, ils sont couramment utilisés comme arguments pour les fonctions d’ordre supérieur.

Voyons quelques exemples pratiques.

Utilisation des fonctions Lambda avec la fonction map()

map() est une fonction intégrée qui applique une fonction donnée à chaque élément d'un itérable et renvoie un objet map avec les résultats.

Par exemple, disons que nous voulons calculer les racines carrées de chaque nombre d'une liste. Nous pourrions utiliser une fonction Lambda comme ceci :

# Define the list of numbers
numbers = [1, 2, 3, 4]

# Calculate square values and print results
squared = list(map(lambda x: x ** 2, numbers))
print(squared)

Cela donne :

[1, 4, 9, 16]

Nous avons maintenant une liste contenant les racines carrées des nombres initiaux.

Comme nous pouvons le constater, cela simplifie grandement les processus permettant d'utiliser des fonctions à la volée qui n'ont pas besoin d'être réutilisées ultérieurement.

Utilisation des fonctions Lambda avec la fonction filter()

Maintenant, supposons que nous ayons une liste de nombres et que nous souhaitions filtrer les nombres pairs.

Nous pouvons utiliser une fonction Lambda comme suit :

# Create a list of numbers
numbers = [1, 2, 3, 4]

# Filter for even numbers and print results
even = list(filter(lambda x: x % 2 == 0, numbers))
print(even)

Cela donne :

[2,4]

Utilisation des fonctions Lambda avec la fonction sorted()

La fonction sorted() en Python renvoie une nouvelle liste triée à partir des éléments de n'importe quel itérable. À l'aide des fonctions Lambda, nous pouvons appliquer des critères de filtrage spécifiques à ces listes.

Par exemple, supposons que nous ayons une liste de points en deux dimensions : (x, y). Nous souhaitons créer une liste qui classe les valeurs y de manière incrémentielle.

Nous pouvons le faire comme ceci :

# Creates a list of points
points = [(1, 2), (3, 1), (5, -1)]

# Sort the points and print
points_sorted = sorted(points, key=lambda point: point[1])
print(points_sorted)

Et nous obtenons :

[(5, -1), (3, 1), (1, 2)]

Utilisation des fonctions Lambda dans les compréhensions de listes

Compte tenu de leur concision, les fonctions Lambda peuvent être intégrées dans des compréhensions de listes pour des calculs à la volée.

Supposons que nous ayons une liste de nombres. Nous voulons :

  • Parcourir toute la liste
  • Calculez et imprimez le double des valeurs initiales.

Voici comment procéder :

# Create a list of numbers
numbers = [1, 2, 3, 4]

# Calculate and print the double of each one
squared = [(lambda x: x ** 2)(x) for x in numbers]
print(squared)

Et on obtient :

[1, 4, 9, 16]

Avantages de l'utilisation des fonctions Lambda

Compte tenu des exemples que nous avons explorés, passons en revue quelques avantages de l'utilisation des fonctions Lambda :

  • Concision et lisibilité là où la logique est simple : les fonctions Lambda permettent un code concis, réduisant ainsi le besoin de définitions de fonctions standard. Cela améliore la lisibilité dans les cas où la logique des fonctions est simple.
  • Capacités de programmation fonctionnelle améliorées : les fonctions Lambda s'alignent bien avec les principes de programmation fonctionnelle, permettant des constructions fonctionnelles dans le code Python. En particulier, ils facilitent l'utilisation de fonctions d'ordre supérieur et l'application de fonctions en tant qu'objets de première classe.
  • Quand et pourquoi préférer les fonctions Lambda : les fonctions Lambda sont particulièrement avantageuses lors de la définition de fonctions courtes et « jetables » qui n'ont pas besoin d'être réutilisées ailleurs dans le code. Ils sont donc idéaux pour une utilisation en ligne, comme les arguments de fonctions d'ordre supérieur.

Limites et inconvénients

Discutons brièvement de certaines limitations et inconvénients des fonctions Lambda en Python :

  • Défis de lisibilité dans les expressions complexes : bien que les fonctions Lambda soient concises, elles peuvent devenir difficiles à lire et à comprendre lorsqu'elles sont utilisées pour des expressions complexes. Cela peut conduire à un code plus difficile à maintenir et à déboguer.
  • Limitations de la gestion des erreurs et du débogage : comme les fonctions Lambda ne peuvent contenir qu'une seule expression, elles ne peuvent pas inclure d'instructions, comme le bloc try-sauf pour la gestion des erreurs. Cette limitation les rend inadaptés aux opérations complexes nécessitant ces fonctionnalités.
  • Fonctionnalité restreinte : étant donné que les fonctions Lambda ne peuvent contenir qu'une seule expression, elles sont moins polyvalentes que les fonctions standard. Cette restriction inhérente à la conception limite leur utilisation à des opérations et transformations simples.

Meilleures pratiques d'utilisation des fonctions Lambda

Maintenant que nous avons examiné certains avantages et inconvénients, définissons quelques bonnes pratiques pour utiliser efficacement les fonctions Lambda :

  • Gardez-les simples : pour maintenir la lisibilité et la simplicité, les fonctions Lambda doivent rester courtes et limitées à des opérations simples. Les fonctions avec une logique complexe doivent être refactorisées en fonctions standard.
  • Éviter la surutilisation : bien que les fonctions Lambda soient pratiques dans de nombreuses situations, leur utilisation excessive peut conduire à un code difficile à lire et à maintenir. Utilisez-les judicieusement et optez pour des fonctions standards lorsque la clarté est fondamentale.
  • Combinez les fonctions Lambda avec d'autres fonctionnalités Python : comme nous l'avons vu, les fonctions Lambda peuvent être efficacement combinées avec d'autres fonctionnalités Python, telles que les compréhensions de listes et les fonctions d'ordre supérieur. Cela peut donner lieu à un code plus expressif et concis lorsqu'il est utilisé de manière appropriée.

Techniques avancées avec fonctions Lambda

Dans certains cas, des techniques plus avancées de la fonction Lambda peuvent être utiles.

Voyons quelques exemples.

Fonctions Lambda imbriquées

Les fonctions Lambda peuvent être imbriquées pour des opérations complexes.

Cette technique est utile dans les scénarios où vous devez avoir plusieurs petites transformations dans une séquence.

Par exemple, supposons que vous souhaitiez créer une fonction qui calcule la racine carrée d'un nombre, puis ajoute 1. Voici comment utiliser les fonctions Lambda pour ce faire :

# Create a nested lambda function
nested_lambda = lambda x: (lambda y: y ** 2)(x)   1

# Print the result for the value 3
print(nested_lambda(3))

Vous obtenez :

10

Intégration avec les bibliothèques Python pour des fonctionnalités avancées

De nombreuses bibliothèques Python exploitent les fonctions Lambda pour simplifier les tâches complexes de traitement de données.

Par exemple, les fonctions Lambda peuvent être utilisées avec Pandas et NumPy pour simplifier la manipulation et la transformation des données.

Supposons que nous ayons un bloc de données avec deux colonnes. Nous voulons créer une autre colonne qui soit la somme des deux autres. Dans ce cas, nous pouvons utiliser les fonctions Lambda comme suit :

# Create the columns' data
data = {'A': [1, 2, 3], 'B': [4, 5, 6]}

# Create data frame
df = pd.DataFrame(data)

# Create row C as A B and print the dataframe
df['C'] = df.apply(lambda row: row['A']   row['B'], axis=1)
print(df)

Et nous obtenons :

   A  B  C
0  1  4  5
1  2  5  7
2  3  6  9

C'est tout pour notre visite guidée des fonctions Lambda en Python !

Conclusion

Dans cet article, nous avons vu comment utiliser les fonctions Lambda en Python, exploré leurs avantages et inconvénients, quelques bonnes pratiques et abordé quelques cas d'utilisation avancés.

Bon codage !

P.S. Si vous souhaitez lire les articles Python dès leur sortie de presse, abonnez-vous à notre newsletter Python Wizardry et ne manquez jamais un seul article !

Déclaration de sortie Cet article est reproduit sur : https://dev.to/appsignal/how-to-use-lambda-functions-in-python-3llj?1 En cas de violation, veuillez contacter [email protected] pour le supprimer.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3