Detectando inicialização de gerador vazio
Em Python, geradores são iteradores que geram valores um de cada vez. Como tal, determinar se um gerador está vazio desde o início pode ser um desafio. Ao contrário das listas ou tuplas, os geradores não têm um comprimento inerente ou método isEmpty.
Enfrentando o desafio
Para resolver isso, uma abordagem comum envolve o uso de uma função auxiliar para espie o primeiro valor no gerador sem consumi-lo. Se a função peek retornar None, isso indica que o gerador não possui itens.
Implementação sugerida
Uma dessas funções, chamada peek, pode ser implementada da seguinte forma:
def peek(iterable):
try:
first = next(iterable)
except StopIteration:
return None
return first, itertools.chain([first], iterable)
Usando Peek para determinar geradores vazios
Para determinar se um gerador está vazio, você pode usar o peek funcionam da seguinte maneira:
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.
Neste exemplo, se o gerador estiver vazio, a função peek retornará None e a condição if será verdadeira. Caso contrário, o bloco else será executado. Ao utilizar essa abordagem, você pode detectar com eficácia se um gerador está vazio desde o início.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3