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ängen- oder isEmpty-Methode.
Bewältigung der Herausforderung
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:
def peek(iterable):
try:
first = next(iterable)
except StopIteration:
return None
return first, itertools.chain([first], iterable)
Peek verwenden, um leere Generatoren zu bestimmen
Um festzustellen, ob ein Generator leer ist, können Sie den Peek verwenden Funktion auf folgende Weise:
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.
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 effektiv erkennen, ob ein Generator von Anfang an leer ist.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3