Avancé
🧠 Fondamentaux
30 XP
0 personnes ont réussi
Pipeline de traitement avec générateurs
Dans la vraie vie, les générateurs sont souvent utilisés pour créer des pipelines de traitement. L'idée, c'est d'enchaîner plusieurs générateurs comme des tuyaux : chaque générateur prend les données du précédent, les transforme, et les passe au suivant.
Par exemple, imagine que tu as des lignes de log et tu veux : 1. Filtrer celles qui contiennent un mot-clé 2. Extraire une partie de chaque ligne 3. Convertir le résultat
Chaque étape est un petit générateur simple, et tu les connectes ensemble.
Écris trois générateurs qui forment un pipeline :
filtrer(lignes, mot) : ne garde que les lignes contenant le mot extraire_nombres(lignes) : pour chaque ligne, extrait le premier nombre trouvé (ou ignore la ligne s'il n'y en a pas) plus_grands_que(nombres, seuil) : ne garde que les nombres strictement supérieurs au seuil
Puis écris une fonction pipeline(lignes, mot, seuil) qui connecte les trois et renvoie la liste des résultats.
import re
def filtrer(lignes, mot):
for ligne in lignes:
if mot in ligne:
yield ligne
def extraire_nombres(lignes):
for ligne in lignes:
match = re.search(r'\d+', ligne)
if match:
yield int(match.group())
def plus_grands_que(nombres, seuil):
for n in nombres:
if n > seuil:
yield n
def pipeline(lignes, mot, seuil):
return list(plus_grands_que(extraire_nombres(filtrer(lignes, mot)), seuil))