Enchaînement et Composition des Itérateurs
Glissez pour afficher le menu
L’enchaînement et la composition des itérateurs permettent de construire des pipelines de données puissants en Python. En reliant entre elles des fonctions itératrices ou génératrices simples, il est possible de traiter les données étape par étape, chaque étape transformant ou filtrant les données avant de les transmettre à la suivante. Cette approche est particulièrement utile lorsque plusieurs opérations doivent être appliquées en séquence, comme filtrer des éléments puis les transformer, ou combiner des données provenant de plusieurs sources. La vidéo ci-dessus illustre comment utiliser des pipelines de générateurs pour garder un code modulaire et économe en mémoire, évitant ainsi la création de listes intermédiaires.
Pour voir cela en pratique, considérez un scénario où vous disposez d’une séquence de nombres et souhaitez filtrer les nombres pairs, puis élever au carré les nombres restants. Cela peut être réalisé en enchaînant deux fonctions génératrices : l’une pour le filtrage, l’autre pour la transformation. Cette méthode garantit que chaque élément est traité uniquement lorsque cela est nécessaire, rendant le code à la fois concis et efficace.
12345678910111213141516171819def filter_odds(numbers): for n in numbers: if n % 2 != 0: yield n def square_numbers(numbers): for n in numbers: yield n ** 2 # Original data data = range(10) # Chain the generators: first filter, then transform filtered = filter_odds(data) squared = square_numbers(filtered) # Collect results result = list(squared) print(result) # Output: [1, 9, 25, 49, 81]
La première fonction, filter_odds, prend un itérable de nombres et ne génère que ceux qui sont impairs. La seconde fonction, square_numbers, prend un itérable et génère le carré de chaque nombre. En transmettant directement la sortie de filter_odds à square_numbers, on crée un pipeline : d’abord le filtrage, puis la transformation des données. Le résultat final est collecté dans une liste et affiché, montrant les carrés de tous les nombres impairs de 0 à 9.
Cette méthode est économe en mémoire car chaque valeur est traitée une à une, sans créer de listes intermédiaires. Elle permet également de garder un code modulaire, chaque fonction génératrice accomplissant une tâche précise et pouvant être réutilisée dans différents pipelines.
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion