Maison  >  Article  >  développement back-end  >  La différence entre les itérateurs et les générateurs Python

La différence entre les itérateurs et les générateurs Python

(*-*)浩
(*-*)浩original
2019-06-22 16:12:173153parcourir

Iterator est un concept plus abstrait. Tout objet, si sa classe a la méthode next et la méthode iter, se renvoie lui-même pour les objets conteneurs tels que la chaîne, la liste, le dict, le tuple, etc., utilisez For. le parcours en boucle est très pratique.

La différence entre les itérateurs et les générateurs Python

L'instruction for en arrière-plan appelle la fonction iter() sur l'objet conteneur iter() est une fonction intégrée de python. iter() renvoie un objet itérateur qui définit la méthode next(), qui accède aux éléments du conteneur un par un. next() est également une fonction intégrée de python. Lorsqu'il n'y a aucun élément suivant, next() lèvera une exception StopIteration. (Apprentissage recommandé : Tutoriel vidéo Python)

# 随便定义一个list
listArray=[1,2,3]
# 使用iter()函数
iterName=iter(listArray)
print(iterName)

Generator (Generator) est un outil simple et puissant pour créer des itérateurs. Elles sont écrites comme des fonctions normales, sauf qu'elles utilisent des instructions de rendement lorsqu'elles doivent renvoyer des données. Chaque fois que next() est appelé, le générateur renvoie la position où il s'est arrêté (il se souvient de la position où l'instruction a été exécutée pour la dernière fois et de toutes les valeurs des données)

# 菲波那切数列
def Fib(max):
    n, a, b = 0, 0, 1
    while n < max:
        yield b
        a, b = b, a + b
        n = n + 1
    return '亲!没有数据了...'
# 调用方法,生成出10个数来
f=Fib(10)
# 使用一个循环捕获最后return 返回的值,保存在异常StopIteration的value中
while  True:
    try:
        x=next(f)
        print("f:",x)
    except StopIteration as e:
        print("生成器最后的返回值是:",e.value)
        break

Différence :

Les générateurs peuvent faire tout ce que les itérateurs peuvent faire, et comme les méthodes iter() et next() sont automatiquement créées, les générateurs sont particulièrement concis et les générateurs sont également efficaces, en utilisant des expressions génératrices au lieu de listes. L'analyse peut économiser de la mémoire à la fois. en même temps. En plus des méthodes automatiques de création et de sauvegarde de l'état du programme, une exception StopIteration est automatiquement levée lorsque le générateur se termine.

Pour plus d'articles techniques liés à Python, veuillez visiter la colonne Tutoriel Python pour apprendre !

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