Maison  >  Article  >  développement back-end  >  Itérateurs et générateurs de base de Python

Itérateurs et générateurs de base de Python

高洛峰
高洛峰original
2017-03-27 16:41:011966parcourir

Itérateurs et générateurs


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 :

  1. 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()

  2. 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

  3. Vous ne pouvez pas revenir en arrière lorsque vous êtes à mi-chemin de l'accès

  4. 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn