So ermitteln Sie in Python, ob ein Generator leer ist

Patricia Arquette
Freigeben: 2024-10-20 10:40:02
Original
906 Leute haben es durchsucht

How to Determine If a Generator is Empty in Python

Bestimmen der Leerheit eines Generators

In Python sind Generatoren ein leistungsstarkes Werkzeug für die verzögerte Auswertung und Iteration über große Datensätze. Allerdings stellt die Feststellung, ob ein Generator leer ist, aufgrund seiner dynamischen Natur eine besondere Herausforderung dar. Im Gegensatz zu Listen oder Tupeln haben Generatoren kein Größenattribut und eine einfache Iteration über sie würde zu einer StopIteration-Ausnahme führen.

Peek vs. HasNext

Einige schlagen das vielleicht vor Verwenden der Funktion peek(), um zu überprüfen, ob ein Generator Elemente enthält. Mit peek() können Sie zwar das erste Element eines Generators abrufen, ohne es zu verbrauchen, es bietet jedoch keine Möglichkeit, festzustellen, ob der Generator leer ist. Dies liegt daran, dass peek() eine StopIteration-Ausnahme auslöst, wenn der Generator leer ist, die nicht von der Ausnahme zu unterscheiden ist, die ausgelöst würde, wenn versucht würde, über einen leeren Generator zu iterieren.

Ähnlich verhält es sich üblicherweise mit der Funktion hasNext() in Java gefunden, ist in Python-Generatoren nicht verfügbar.

Von Anfang an auf Leere prüfen

Um festzustellen, ob ein Generator von Anfang an leer ist, können Sie a verwenden Benutzerdefinierte Funktion wie die in der Antwort bereitgestellte:

<code class="python">def peek(iterable):
    try:
        first = next(iterable)
    except StopIteration:
        return None
    return first, itertools.chain([first], iterable)</code>
Nach dem Login kopieren

Diese Funktion ruft das erste Element des Generators ab und gibt None zurück, wenn der Generator leer ist. Außerdem bleibt der Status des Generators erhalten, indem eine modifizierte Version zurückgegeben wird, die das erste Element enthält.

Verwendung

Um diese Funktion zu verwenden, können Sie sie mit dem Generator als aufrufen Argument:

<code class="python">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.</code>
Nach dem Login kopieren

Mit dieser Prüfung können Sie feststellen, ob der Generator leer ist, und den leeren Fall entsprechend behandeln, bevor Sie darüber iterieren.

Das obige ist der detaillierte Inhalt vonSo ermitteln Sie in Python, ob ein Generator leer ist. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!