Iterateur::py
Aller à la navigation
Aller à la recherche
| Fiche express | |
|---|---|
| Domaine | Python — itération |
| Concepts | Itérateur, générateur (yield)
|
Les itérateurs permettent de parcourir un objet élément par élément via iter() et next(). Les générateurs (mot-clé yield) produisent des valeurs à la volée.
- pour afficher les elements d'une liste, une boucle for est possible
liste = [1, 2, 3] for element in liste:
- mais il existe les iterateurs
chaine = "test" iterateur_chaine = iter(chaine) iterateur_chaine
next(iterateur_chaine)
class RevStr(str):
def __iter__(self):
return ItRevStr(self)
class ItRevStr:
def __init__(self, chaine_a_parcourir):
self.chaine_a_parcourir = chaine_a_parcourir
self.position = len(chaine_a_parcourir)
def __next__(self):
if self.position == 0:
raise StopIteration
self.position
return self.chaine_a_parcourir[self.position]
machaine = RevStr("Bonjour")
print(machaine)
for lettre in machaine:
print(lettre)
les generateurs
for nombre in intervalle(5, 10):
print(nombre)
def intervalle(borne_inf, borne_sup):
borne_inf += 1
while borne_inf < borne_sup:
yield borne_inf
borne_inf += 1
def intervalle(borne_inf, borne_sup):
borne_inf += 1
while borne_inf < borne_sup:
valeur_recue = (yield borne_inf)
if valeur_recue is not None:
borne_inf = valeur_recue
borne_inf += 1