Iterateur::py

De wiki.nexiat.fr
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

Voir aussi