"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo comprobar si un generador está vacío en Python?

¿Cómo comprobar si un generador está vacío en Python?

Publicado el 2024-11-06
Navegar:890

How to Check if a Generator is Empty in Python?

Detección de inicialización de generador vacío

En Python, los generadores son iteradores que generan valores uno a la vez. Como tal, determinar si un generador está vacío desde el principio puede ser un desafío. A diferencia de las listas o tuplas, los generadores no tienen una longitud inherente ni el método isEmpty.

Afrontando el desafío

Para abordar esto, un enfoque común implica el uso de una función auxiliar para eche un vistazo al primer valor en el generador sin consumirlo. Si la función de vista previa devuelve Ninguno, indica que el generador no tiene elementos.

Implementación sugerida

Una de esas funciones, denominada vista, se puede implementar de la siguiente manera:

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

Uso de Peek para determinar generadores vacíos

Para determinar si un generador está vacío, puedes usar el peek funciona de la siguiente manera:

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.

En este ejemplo, si el generador está vacío, la función de vista previa devolverá Ninguno y la condición if será verdadera. De lo contrario, se ejecutará el bloque else. Al utilizar este enfoque, puede detectar eficazmente si un generador está vacío desde su inicio.

Declaración de liberación Este artículo se reimprime en: 1729390097 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3