La fonction Python iter () renvoie un itérateur pour l'objet donné.
La iter()
fonction crée un objet qui peut être itéré un élément à la fois.
Ces objets sont utiles lorsqu'ils sont couplés à des boucles comme for loop, while loop.
La syntaxe de la iter()
fonction est:
iter (objet, sentinelle)
Paramètres de iter ()
La iter()
fonction prend deux paramètres:
- objet - objet dont l'itérateur doit être créé (peut être des ensembles, des tuples, etc.)
- sentinel (facultatif) - valeur spéciale utilisée pour représenter la fin d'une séquence
Valeur renvoyée par iter ()
- La
iter()
fonction renvoie un objet itérateur pour l'objet donné. - Si l'objet défini par l'utilisateur n'implémente pas
__iter__()
et__next__()
ou__getitem()__
, l'TypeError
exception est déclenchée. - Si le paramètre sentinel est également fourni,
iter()
renvoie un itérateur jusqu'à ce que le caractère sentinelle ne soit pas trouvé.
Exemple 1: Fonctionnement de Python iter ()
# list of vowels vowels = ('a', 'e', 'i', 'o', 'u') vowels_iter = iter(vowels) print(next(vowels_iter)) # 'a' print(next(vowels_iter)) # 'e' print(next(vowels_iter)) # 'i' print(next(vowels_iter)) # 'o' print(next(vowels_iter)) # 'u'
Production
aeiou
Exemple 2: iter () pour les objets personnalisés
class PrintNumber: def __init__(self, max): self.max = max def __iter__(self): self.num = 0 return self def __next__(self): if(self.num>= self.max): raise StopIteration self.num += 1 return self.num print_num = PrintNumber(3) print_num_iter = iter(print_num) print(next(print_num_iter)) # 1 print(next(print_num_iter)) # 2 print(next(print_num_iter)) # 3 # raises StopIteration print(next(print_num_iter))
Production
1 2 3 Traceback (dernier appel en dernier): fichier "", ligne 23, dans le fichier "", ligne 11, dans __next__ StopIteration
Exemple 3: iter () avec le paramètre sentinel
class DoubleIt: def __init__(self): self.start = 1 def __iter__(self): return self def __next__(self): self.start *= 2 return self.start __call__ = __next__ my_iter = iter(DoubleIt(), 16) for x in my_iter: print(x)
Production
2 4 8
Ici, nous avons implémenté un objet itérable personnalisé sans StopIteration
condition.
Cependant, nous pouvons utiliser la iter()
méthode avec le sentinel
paramètre pour arrêter l'itération. Si la valeur renvoyée de __next__()
est égale à sentinel
, StopIteration
sera augmentée, sinon la valeur sera renvoyée.
Lecture recommandée: itérateurs Python