Latest web development tutorials

itérateurs et générateurs python3

Iterator

Iteration est l'une des caractéristiques les plus puissantes de Python est un moyen d'accéder aux éléments de la collection. .

Un itérateur est un parcours de l'objet peut se rappeler l'emplacement.

objet Iterator est accessible à partir du début du premier élément de la collection jusqu'à ce que tous les éléments sont accessibles complètement terminés. Iterator ne peut pas aller de l'avant vers l'arrière.

Iterator dispose de deux méthodes de base: iter () et next ().

Cordes, liste ou tuple objets peuvent être utilisés pour créer un itérateur:

>>> list=[1,2,3,4]
>>> it = iter(list)    # 创建迭代器对象
>>> print (next(it))   # 输出迭代器的下一个元素
1
>>> print (next(it))
2
>>> 

objet Iterator peut être utilisé pour la déclaration de cheminement conventionnel:

#!/usr/bin/python3

list=[1,2,3,4]
it = iter(list)    # 创建迭代器对象
for x in it:
    print (x, end=" ")

Le programme ci-dessus, les résultats de sortie sont les suivantes:

1 2 3 4

Vous pouvez également utiliser la fonction suivante ():

#!/usr/bin/python3

import sys         # 引入 sys 模块

list=[1,2,3,4]
it = iter(list)    # 创建迭代器对象

while True:
    try:
        print (next(it))
    except StopIteration:
        sys.exit()

Le programme ci-dessus, les résultats de sortie sont les suivantes:

1
2
3
4

générateur

En Python, en utilisant la fonction de rendement est connu comme un générateur (générateur).

La différence est que, avec une fonction ordinaire, le générateur est une fonction retour itérateur ne peut être utilisé des opérations itératives, plus simples à comprendre Builder est un itérateur.

Appeler le générateur est en cours d'exécution du processus, la fonction de rendement rencontré fera une pause à chaque fois et enregistrer toutes les informations de fonctionnement courant, la valeur de retour du rendement. Continuer à exécuter à partir de la position actuelle et la prochaine exécution de la méthode suivante ().

L'exemple suivant utilise le rendement réalisé colonnes de Fibonacci:

#!/usr/bin/python3

import sys

def fibonacci(n): # 生成器函数 - 斐波那契
    a, b, counter = 0, 1, 0
    while True:
        if (counter > n): 
            return
        yield a
        a, b = b, a + b
        counter += 1
f = fibonacci(10) # f 是一个迭代器,由生成器返回生成

while True:
    try:
        print (next(f), end=" ")
    except StopIteration:
        sys.exit()

Le programme ci-dessus, les résultats de sortie sont les suivantes:

0 1 1 2 3 5 8 13 21 34 55