Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Fonctions Intégrées | Fonction Comme Argument
Techniques Python Intermédiaires

book
Fonctions Intégrées

Voici deux autres exemples démontrant l'utilisation des fonctions lambda avec les fonctions filter() et sorted() en Python.

Alternativement, vous pouvez passer une fonction personnalisée plus complexe au lieu d'une lambda à ces fonctions d'ordre supérieur.

filter()

La fonction filter() est utilisée pour créer un itérateur à partir des éléments d'un itérable pour lesquels une fonction retourne vrai. Voici un exemple utilisant filter() avec une fonction lambda pour filtrer les nombres impairs d'une liste :

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# Using a lambda function to filter out odd numbers
even_numbers = filter(lambda x: x % 2 == 0, numbers)

# Convert the filter object to a list
even_numbers_list = list(even_numbers)
print(even_numbers_list)
12345678
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] # Using a lambda function to filter out odd numbers even_numbers = filter(lambda x: x % 2 == 0, numbers) # Convert the filter object to a list even_numbers_list = list(even_numbers) print(even_numbers_list)
copy

Dans cet exemple, la fonction lambda lambda x: x % 2 == 0 vérifie si un nombre est pair. La fonction filter() applique cette lambda à chaque élément de la liste de nombres et retourne un itérateur de nombres pairs.

sorted()

La fonction sorted() renvoie une nouvelle liste triée à partir des éléments de n'importe quel itérable.

python
sorted(iterable, key=key, reverse=reverse)
  • iterable est la séquence à trier (liste, dict, tuple, etc);

  • key est une fonction à exécuter pour décider de l'ordre;

  • reverse est un booléen. False est un ordre croissant, et True est décroissant. La valeur par défaut est False.

Voici un exemple utilisant sorted() avec une fonction lambda pour trier une liste de tuples en fonction du deuxième élément de chaque tuple :

tuples = [(1, 'banana'), (2, 'apple'), (3, 'orange')]

# Using a lambda function to sort by the second element of each tuple
sorted_tuples = sorted(tuples, key=lambda x: x[1])

print(sorted_tuples)
123456
tuples = [(1, 'banana'), (2, 'apple'), (3, 'orange')] # Using a lambda function to sort by the second element of each tuple sorted_tuples = sorted(tuples, key=lambda x: x[1]) print(sorted_tuples)
copy

Dans cet exemple, la fonction lambda lambda x: x[1] renvoie le deuxième élément de chaque tuple. La fonction sorted() trie ensuite la liste de tuples en fonction de ces deuxièmes éléments, ce qui donne une liste triée alphabétiquement par les noms des fruits.

Tâche

Swipe to start coding

Considérons une liste de dictionnaires représentant des livres, et vous souhaitez filtrer les livres qui ont un certain nombre de pages.

  1. Définissez la liste des livres. books est une liste de dictionnaires. Chaque dictionnaire représente un livre avec deux clés : "title" et "pages".
  2. Créez la fonction personnalisée has_many_pages qui accepte les arguments book et min_pages.
  3. Utilisez filter() avec la fonction personnalisée.
  4. Convertissez l'objet filter en une liste, stockez-le dans la variable filtered_books_list, et imprimez-le.

Solution

# Step 1: Define the list of books
books = [
{"title": "Harry Potter and the Deathly Hallows", "pages": 640},
{"title": "Rich Dad Poor Dad", "pages": 336},
{"title": "The Great Gatsby", "pages": 160},
{"title": "The Hobbit", "pages": 400}
]

# Step 2: Create a custom function
def has_many_pages(book, min_pages=350):
"""Check if the book has more than min_pages."""
return book["pages"] > min_pages

# Step 3: Use filter() with the custom function
filtered_books = filter(lambda book: has_many_pages(book), books)

# Convert the filter object to a list and print
filtered_books_list = list(filtered_books)
print(filtered_books_list)

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 3. Chapitre 3
# Step 1: Define the list of books
books = [
{"title": "Harry Potter and the Deathly Hallows", "pages": 640},
{"title": "Rich Dad Poor Dad", "pages": 336},
{"title": "The Great Gatsby", "pages": 160},
{"title": "The Hobbit", "pages": 400}
]

# Step 2: Create a custom function
def has_many_pages(___, min_pages=350):
"""Check if the book has more than min_pages."""
return ___["pages"] > ___

# Step 3: Use filter() with the custom function
filtered_books = ___(lambda book: has_many_pages(book), ___)

# Convert the filter object to a list and print
filtered_books_list = list(___)
print(filtered_books_list)

Demandez à l'IA

expand
ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

some-alt