"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como verificar se um gerador está vazio em Python?

Como verificar se um gerador está vazio em Python?

Publicado em 2024-11-06
Navegar:478

How to Check if a Generator is Empty in Python?

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.

Declaração de lançamento Este artigo foi reimpresso em: 1729390097 Se houver alguma violação, entre em contato com [email protected] para excluí-lo
Tutorial mais recente Mais>

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