Utilisation de Lambda avec les fonctions intégrées
Les fonctions lambda deviennent particulièrement puissantes lorsqu'elles sont combinées avec les fonctions intégrées de Python telles que map(), filter() et sorted(). Ces combinaisons vous permettent d'écrire du code efficace pour la transformation et la manipulation des données.
La fonction map() avec Lambda
La fonction map() applique une fonction donnée à chaque élément d'un itérable (comme une liste) et renvoie un objet map avec les résultats.
-
Créez un nouveau fichier nommé lambda_builtin.py dans le répertoire /home/labex/project.
-
Ajoutez le code suivant pour démontrer l'utilisation de map() avec lambda :
## Utilisation de map() avec une fonction lambda pour mettre au carré chaque nombre d'une liste
numbers = [1, 2, 3, 4, 5]
squared_numbers = list(map(lambda x: x**2, numbers))
print("Nombres originaux:", numbers)
print("Nombres au carré:", squared_numbers)
- Exécutez votre code :
python3 ~/project/lambda_builtin.py
Vous devriez voir :
Nombres originaux: [1, 2, 3, 4, 5]
Nombres au carré: [1, 4, 9, 16, 25]
La fonction filter() avec Lambda
La fonction filter() crée un nouvel itérable avec des éléments qui satisfont une condition (la fonction renvoie True).
- Ajoutez le code suivant à votre fichier
lambda_builtin.py :
## Utilisation de filter() avec une fonction lambda pour trouver les nombres pairs
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print("Tous les nombres:", numbers)
print("Nombres pairs:", even_numbers)
## Utilisation de filter() pour trouver les noms qui commencent par 'J'
names = ["Alice", "Bob", "John", "Jane", "Michael", "Jessica"]
j_names = list(filter(lambda name: name.startswith('J'), names))
print("Tous les noms:", names)
print("Noms commençant par J:", j_names)
- Exécutez votre code mis à jour :
python3 ~/project/lambda_builtin.py
Vous devriez voir une sortie supplémentaire :
Tous les nombres: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Nombres pairs: [2, 4, 6, 8, 10]
Tous les noms: ['Alice', 'Bob', 'John', 'Jane', 'Michael', 'Jessica']
Noms commençant par J: ['John', 'Jane', 'Jessica']
La fonction sorted() avec Lambda
La fonction sorted() vous permet de trier des itérables en utilisant une fonction clé personnalisée, ce qui est là où les fonctions lambda sont très utiles.
- Ajoutez le code suivant à votre fichier
lambda_builtin.py :
## Utilisation de sorted() avec lambda pour trier par le deuxième élément des tuples
pairs = [(1, 5), (3, 2), (5, 7), (2, 9), (4, 1)]
sorted_by_second = sorted(pairs, key=lambda pair: pair[1])
print("Paires originales:", pairs)
print("Triées par deuxième élément:", sorted_by_second)
## Utilisation de sorted() avec lambda pour trier les chaînes par longueur
words = ["apple", "banana", "cherry", "date", "elderberry", "fig"]
sorted_by_length = sorted(words, key=lambda word: len(word))
print("Mots originaux:", words)
print("Triés par longueur:", sorted_by_length)
- Exécutez votre code mis à jour :
python3 ~/project/lambda_builtin.py
Vous devriez voir une sortie supplémentaire :
Paires originales: [(1, 5), (3, 2), (5, 7), (2, 9), (4, 1)]
Triées par deuxième élément: [(4, 1), (3, 2), (1, 5), (5, 7), (2, 9)]
Mots originaux: ['apple', 'banana', 'cherry', 'date', 'elderberry', 'fig']
Triés par longueur: ['fig', 'date', 'apple', 'cherry', 'banana', 'elderberry']
Combiner plusieurs fonctions Lambda
Vous pouvez également enchaîner ou combiner plusieurs opérations en utilisant des fonctions lambda :
- Ajoutez le code suivant à votre fichier
lambda_builtin.py :
## Combiner map et filter avec des fonctions lambda
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
## D'abord mettre les nombres au carré, puis filtrer pour les valeurs supérieures à 20
result = list(filter(lambda x: x > 20, map(lambda x: x**2, numbers)))
print("Nombres originaux:", numbers)
print("Nombres au carré > 20:", result)
- Exécutez votre code mis à jour :
python3 ~/project/lambda_builtin.py
Vous devriez voir une sortie supplémentaire :
Nombres originaux: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Nombres au carré > 20: [25, 36, 49, 64, 81, 100]
Les fonctions lambda avec les fonctions intégrées telles que map(), filter() et sorted() offrent un moyen puissant de traiter les données avec un code minimal. Dans l'étape suivante, nous explorerons des applications plus pratiques des fonctions lambda.