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