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

高洛峰
Libérer: 2017-03-27 16:41:01
original
1993 Les gens l'ont consulté

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
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

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)
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal