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.
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