Maison > Article > développement back-end > Itérateurs et générateurs de base de Python
1 Itérateur
Itérateur Est un moyen de. accéder aux éléments de la collection. L'objet itérateur commence à accéder à partir du premier élément de la collection jusqu'à ce que tous les éléments aient été accédés. Les itérateurs ne peuvent qu'avancer, pas reculer, mais ce n'est pas grave car les gens reculent rarement en itérant. De plus, l’un des grands avantages des itérateurs est qu’ils ne nécessitent pas que tous les éléments soient préparés à l’avance pour l’ensemble du processus d’itération. L'itérateur ne calcule un élément que lorsqu'il y effectue une itération, et avant ou après cela, l'élément peut ne pas exister ou être détruit. Cette fonctionnalité le rend particulièrement adapté pour parcourir certaines collections énormes ou infinies, comme plusieurs fichiers G
Caractéristiques :
Les visiteurs n'ont pas besoin de se soucier de la structure interne de l'itérateur, ils n'ont qu'à récupérer en continu le contenu suivant via la méthode next()
Ne peut pas être aléatoire Pour accéder à une valeur de la collection, vous ne pouvez y accéder que de manière séquentielle du début à la fin
Vous ne pouvez pas revenir en arrière lorsque vous êtes à mi-chemin de l'accès
Facile de parcourir des ensembles de données relativement volumineux et d'économiser de la mémoire
>>> a = iter([1,2,3,4,5]) >>> a <list_iterator object at 0x101402630> >>> a.__next__() 1 >>> a.__next__() 2 >>> a.__next__() 3 >>> a.__next__() 4 >>> a.__next__() 5 >>> a.__next__() Traceback (most recent call last): File "<stdin>", line 1, in <module> StopIteration
2. Générateur
Lorsqu'une fonction est appelée, elle renvoie un itérateur, alors cette fonction est appelée un générateur si la fonction ; contient la syntaxe de rendement, alors ceci La fonction deviendra un générateur
def func(): yield 1 yield 2 yield 3 yield 4
Dans le code ci-dessus : func est une fonction appelée générateur. Lorsque cette fonction func() obtiendra un itérateur.
>>> temp = func() >>> temp.__next__() 1 >>> temp.__next__() 2 >>> temp.__next__() 3 >>> temp.__next__() 4 >>> temp.__next__() Traceback (most recent call last): File "<stdin>", line 1, in <module> StopIteration
3. Exemple
a. range
def xrange(n): start = 0 print(start) while True: if start > n : return yield start start += 1 obj = xrange(4) n1 = obj.__next__() n2 = obj.__next__() n3 = obj.__next__() n4 = obj.__next__() n5 = obj.__next__() n6 = obj.__next__() print(n1,n2,n3,n4,n5,n6)
b, utilisez l'itérateur pour accéder à la plage
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!