Python iter ()

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' TypeErrorexception 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 StopIterationcondition.

Cependant, nous pouvons utiliser la iter()méthode avec le sentinelparamètre pour arrêter l'itération. Si la valeur renvoyée de __next__()est égale à sentinel, StopIterationsera augmentée, sinon la valeur sera renvoyée.

Lecture recommandée: itérateurs Python

Articles intéressants...