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.
Les fonctions Lambda font partie de Python depuis la version 2.0, vous aurez donc besoin de :
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
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.
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.
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.
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]
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)]
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 :
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]
Compte tenu des exemples que nous avons explorés, passons en revue quelques avantages de l'utilisation des fonctions Lambda :
Discutons brièvement de certaines limitations et inconvénients des fonctions Lambda en Python :
Maintenant que nous avons examiné certains avantages et inconvénients, définissons quelques bonnes pratiques pour utiliser efficacement les fonctions Lambda :
Dans certains cas, des techniques plus avancées de la fonction Lambda peuvent être utiles.
Voyons quelques exemples.
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
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 !
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 !
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