Maison >développement back-end >Tutoriel Python >Explication détaillée des générateurs en Python

Explication détaillée des générateurs en Python

王林
王林original
2023-06-10 15:25:515539parcourir

Python est un langage de programmation puissant et flexible largement utilisé dans divers domaines. Parmi eux, le générateur est un élément clé de Python. Il présente de nombreux avantages et peut améliorer efficacement l’efficacité d’exécution du code. Cet article vous donnera une introduction détaillée aux générateurs en Python.

1. Qu'est-ce qu'un générateur ?

Un générateur est un type spécial de fonction qui vous permet de parcourir une séquence sans construire au préalable une séquence complète. Cela signifie que le générateur ne générera chaque élément que lorsqu'il sera demandé. Ce processus est également connu sous le nom de « protocole itérateur ».

L'utilisation de générateurs peut économiser considérablement l'utilisation de la mémoire et les ressources informatiques, ce qui est très utile pour traiter des données à grande échelle et des tâches informatiques complexes.

Vous pouvez créer un générateur de deux manières :

1. Modifiez la définition de la fonction en fonction génératrice et utilisez le mot-clé rendement au lieu du mot-clé return.

2. Utilisez des expressions génératrices, similaires aux compréhensions de listes.

Voici un exemple de fonction génératrice :

def fibonacci(limit):
    # 初始值
    a, b = 0, 1
    while a < limit:
        yield a
        a, b = b, a + b

Dans cet exemple, nous définissons une fonction génératrice appelée fibonacci. Il utilise une boucle while pour générer la séquence de Fibonacci et utilise le mot-clé rendement pour renvoyer le générateur dans chaque boucle.

Lorsque cette fonction est appelée, elle ne sera pas exécutée immédiatement, mais renverra un objet générateur. Lorsque vous parcourez cet objet générateur, il génère le prochain numéro de Fibonacci à chaque itération.

Par exemple :

fib = fibonacci(10)
for i in fib:
    print(i)

Le résultat de sortie de ce code sera 0, 1, 1, 2, 3, 5, 8.

2. Expression génératrice

L'expression génératrice est un moyen plus simple de créer un générateur. C'est similaire à une compréhension de liste, mais renvoie un objet générateur. La syntaxe de l'expression du générateur est la suivante :

(表达式 for 变量 in 序列 if 条件)

où l'expression est la valeur à renvoyer par le générateur, la variable est une variable de boucle, la séquence est la séquence à parcourir par la variable, et la condition est facultative.

Par exemple :

gen = (i ** 2 for i in range(10) if i % 2 != 0)

Cette expression génératrice renvoie le carré de tous les nombres impairs de 0 à 9. En appelant la méthode next(), nous pouvons obtenir ces valeurs une par une :

print(next(gen))  # 输出1
print(next(gen))  # 输出9
print(next(gen))  # 输出25

3 Avantages du générateur

1. #

Un générateur est un mécanisme de calcul paresseux qui génère des résultats de calcul uniquement en cas de besoin. Par conséquent, beaucoup d’espace mémoire est économisé.

2. Efficacité opérationnelle élevée

Le générateur évite les frais de calcul et de stockage importants nécessaires pour calculer tous les résultats. Cela rend le générateur très utile pour traiter de grands ensembles de données et des tâches périodiques.

3. Facile à mettre en œuvre

Python fournit un mécanisme de générateur simple et flexible, ce qui rend très facile l'écriture de générateurs.

4. Mutable

Un générateur peut être modifié, par exemple en y ajoutant des éléments ou en en supprimant.

5. Résumé

Generator est un type de données très utile en Python, qui peut grandement améliorer l'efficacité d'exécution du code. Il génère des résultats de calcul uniquement lorsque cela est nécessaire et peut être modifié. Cet article vous présente les générateurs en Python, y compris les fonctions de générateur et les expressions de générateur. En comprenant les avantages des générateurs et leur fonctionnement, vous pourrez mieux utiliser cette technique de programmation efficace.

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