Heim >Backend-Entwicklung >Python-Tutorial >Wie überprüfe ich in Python, ob ein Generator leer ist?

Wie überprüfe ich in Python, ob ein Generator leer ist?

Barbara Streisand
Barbara StreisandOriginal
2024-10-20 12:33:30396Durchsuche

How to Check if a Generator is Empty in Python?

Erkennen leerer Generatorinitialisierung

In Python sind Generatoren Iteratoren, die Werte einzeln liefern. Daher kann es eine Herausforderung sein, von Anfang an festzustellen, ob ein Generator leer ist. Im Gegensatz zu Listen oder Tupeln verfügen Generatoren nicht über eine inhärente Länge oder isEmpty-Methode.

Die Herausforderung angehen

Um dieses Problem zu lösen, besteht ein gängiger Ansatz darin, eine Hilfsfunktion zu verwenden Sehen Sie sich den ersten Wert im Generator an, ohne ihn zu verbrauchen. Wenn die Peek-Funktion „None“ zurückgibt, bedeutet dies, dass der Generator keine Elemente hat.

Vorgeschlagene Implementierung

Eine solche Funktion mit dem Namen „Peek“ kann wie folgt implementiert werden:

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

Verwenden von Peek zur Bestimmung leerer Generatoren

Um festzustellen, ob ein Generator leer ist, können Sie die Peek-Funktion auf folgende Weise verwenden:

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

Wenn in diesem Beispiel der Generator leer ist, gibt die Peek-Funktion None zurück und die if-Bedingung ist wahr. Andernfalls wird der else-Block ausgeführt. Mit diesem Ansatz können Sie von Anfang an effektiv erkennen, ob ein Generator leer ist.

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

Stellungnahme:
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