Au cœur des itérateurs se trouve la possibilité de parcourir des itérables, tels que des listes et des chaînes, de manière séquentielle. Cependant, les générateurs poussent ce concept un peu plus loin, en fournissant un mécanisme puissant pour la génération de valeur à la demande.
Contrairement aux listes, qui stockent toutes leurs valeurs en mémoire, les générateurs génèrent des valeurs une par un selon les besoins. Cela les rend économes en mémoire lorsqu’il s’agit de grands ensembles de données. Les générateurs sont créés à l'aide du mot-clé rendement dans une fonction.
Le mot-clé rendement fonctionne de la même manière pour renvoyer des fonctions, mais au lieu de terminer l'exécution de la fonction, il met la fonction en pause et renvoie un valeur. Les appels suivants à la fonction génératrice reprendront l'exécution là où elle s'était arrêtée, continuant à produire des valeurs jusqu'à ce qu'elle ait épuisé toutes les valeurs possibles.
Analysons la méthode _get_child_candidates dans votre code :
def _get_child_candidates(self, distance, min_dist, max_dist): if self._leftchild and distance - max_dist < self._median: yield self._leftchild if self._rightchild and distance + max_dist >= self._median: yield self._rightchild
Cette méthode prend un nœud et trois paramètres de distance et utilise le rendement pour renvoyer des candidats enfants potentiels qui répondent à certains critères de distance. Chaque instruction de rendement représente un candidat potentiel.
Dans la méthode caller, le code initialise d'abord deux listes : result pour collecter les valeurs finales et candidats pour stocker la valeur initiale. nœud. Ensuite, il entre dans une boucle qui continue tant qu'il y a des candidats dans les candidats :
Cette boucle explore efficacement toute la structure arborescente en utilisant des générateurs pour éviter d'avoir à stocker tous les candidats potentiels en mémoire.
Les générateurs peuvent être contrôlés efficacement grâce à leur méthodes, permettant un comportement personnalisé. Par exemple, un générateur peut être configuré pour cesser de produire des valeurs lorsqu'une certaine condition est remplie.
Le module Python itertools offre une gamme de fonctions puissantes pour manipuler les itérables. Ces fonctions permettent des tâches telles que la création de permutations, la combinaison de générateurs et le regroupement de valeurs.
En résumé, le mot-clé rendement en Python nous permet de créer des générateurs, permettant une itération efficace sur de grands ensembles de données sans consommer de mémoire excessive. Combinés à la polyvalence des itérateurs et aux puissants utilitaires d'itertools, les générateurs débloquent une richesse de fonctionnalités pour la manipulation de données en Python.
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!