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

(*-*)浩
Libérer: 2019-06-22 16:12:17
original
3161 Les gens l'ont consulté

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

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

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!

É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