Maison >développement back-end >Tutoriel Python >Comment vérifier si un générateur est vide en Python ?

Comment vérifier si un générateur est vide en Python ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-20 12:33:30396parcourir

How to Check if a Generator is Empty in Python?

Détection de l'initialisation d'un générateur vide

En Python, les générateurs sont des itérateurs qui génèrent des valeurs une à la fois. Ainsi, déterminer si un générateur est vide dès le départ peut être un défi. Contrairement aux listes ou aux tuples, les générateurs n'ont pas de longueur inhérente ni de méthode isEmpty.

Relever le défi

Pour résoudre ce problème, une approche courante consiste à utiliser une fonction d'assistance pour jetez un œil à la première valeur du générateur sans la consommer. Si la fonction peek renvoie Aucun, cela indique que le générateur n'a aucun élément.

Implémentation suggérée

Une de ces fonctions, nommée peek, peut être implémentée comme suit :

<code class="python">def peek(iterable):
    try:
        first = next(iterable)
    except StopIteration:
        return None
    return first, itertools.chain([first], iterable)</code>

Utiliser Peek pour déterminer les générateurs vides

Pour déterminer si un générateur est vide, vous pouvez utiliser la fonction Peek de la manière suivante :

<code class="python">res = peek(mysequence)
if res is None:
    # sequence is empty.  Do stuff.
else:
    first, mysequence = res
    # Do something with first, maybe?
    # Then iterate over the sequence:
    for element in mysequence:
        # etc.</code>

Dans cet exemple, si le générateur est vide, la fonction peek retournera None et la condition if sera vraie. Sinon, le bloc else sera exécuté. En utilisant cette approche, vous pouvez détecter efficacement si un générateur est vide dès sa création.

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