"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment vérifier si un générateur est vide en Python ?

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

Publié le 2024-11-06
Parcourir:258

How to Check if a Generator is Empty in Python?

Détection de l'initialisation du 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 :

def peek(iterable):
    try:
        first = next(iterable)
    except StopIteration:
        return None
    return first, itertools.chain([first], iterable)

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

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

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.

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.

Déclaration de sortie Cet article est reproduit sur: 1729390097 S'il y a une contrefaçon, veuillez contacter [email protected] pour le supprimer.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3