Über die Python-Ausbeute

Generator mit Ausbeute

Python verfügt über einen Befehl namensield, um das Erstellen eines Generators zu vereinfachen. Ich habe das Verhalten nicht wirklich verstanden, deshalb werde ich unten eine Notiz hinterlassen.

Grundaktion

test.py


def yield_test():
    list0to4 = [0, 1, 2, 3, 4]
    for i in list0to4:
        yield i

for j in yield_test()
    print j

Wenn Sie den obigen Code ausführen, lautet die Ausgabe wie folgt.

0
1
2
3
4

Alle Elemente von [0, 1, 2, 3, 4] können der Reihe nach gelesen werden.

Generatoren kombinieren

Betrachten Sie nun den Fall der Verwendung eines anderen Generators in Kombination.

test.py


def yield_test1():
    list0to4 = [0, 1, 2, 3, 4]
    for i in list0to4:
        yield i

def yield_test2():
    list0to2 = [0, 1, 2]
    for i in list0to2:
        yield i

iter0to2 = yield_test2()
for j in yield_test1()
    print j + iter0to2.next()

In diesem Fall lautet die Ausgabe wie folgt.

0
2
4

Yield_test2 hat weniger Elemente als Yield_test1, aber es gibt keine besonderen Fehler.

Generatorbetrieb

Der Generator löst eine Ausnahme [StopIteration] aus, wenn er das nächste ohne das nächste Element liest. In der for-Anweisung usw. scheint die Schleife durch Ausschließen dieser [Stop Iteration] gestoppt zu werden. Daher löst iter0to2.next () im obigen Beispiel [StopIteration] aus. Auch wenn das Element auf der Seiteield_test1 () verbleibt, wird die for-Anweisung weggelassen.

Welcher hat bei Verwendung einer Generatorkombination dazu geführt, dass die Schleife beendet wurde? Bitte beachten Sie, dass es möglicherweise schwer zu verstehen ist.

Recommended Posts

Über die Python-Ausbeute
Über Python-Slices
Über die Einschlussnotation von Python
Über Python tqdm.
Über Python, Klasse
Informationen zur Python-Vererbung
Über Python, range ()
Über Python Decorator
Informationen zur Python-Referenz
Über Python-Dekorateure
[Python] Über Multi-Prozess
Über Python für Schleife
Über Funktionsargumente (Python)
[Python] Memo über Funktionen
Zusammenfassung über Python3 + OpenCV3
Über Python für ~ (Bereich)
[Python] Memo Über Fehler
Informationen zur Python-Entwicklungsumgebung
Python: Über Funktionsargumente
Python, über die Ausnahmebehandlung
Über Python Pyramid Traversal
Über Python3 ... (Ellipsenobjekt)
[Python] Kapitel 01-01 Über Python (Erster Python)
[Python] Informationen zur Standardeingabe
Über __all__ in Python
Mit Python abflachen
[Python] Informieren Sie sich über pip
Fabric unterstützt Python 3
Python
Informationen zu Python-Objekten und -Klassen
Informationen zu Python-Variablen und -Objekten
Über das Python-Modul venv
Python-Anfänger-Memorandum-Funktion
Über die Aufzählungsfunktion (Python)
Über verschiedene Codierungen von Python 3
Über Python, len () und randint ()
Über Perl, Python, PHP, Ruby
Informationen zu Python-Datums- und Zeitzone
Memorandum über Korrelation [Python]
Ein Memorandum über den Python-Mock
Informationen zu Python-Zeichenfolgenvergleichsoperatoren
Über Python und reguläre Ausdrücke
Über die Funktionen von Python
Über "für _ in range ():" von Python
Informationen zu Python- und Betriebssystemoperationen
Python # Über Referenz und Kopie
Über Python sort () und reverse ()
Ein Hinweis zu [Python] __debug__
Python, Ausbeute, Rückkehr und manchmal Ausbeute von
Python: Ein Hinweis zu Klasse 1 "Abstract"
[Python] Lassen Sie uns kurz über die Einschlussnotation schreiben
Über Python-Diktat und sortierte Funktionen
Über Python und Cython dtype
[Python] Was ist @? (Über Dekorateure)
Was war überraschend an Python-Klassen?
Über Python Pickle (cPickle) und Marschall
[Python] Über Executor und zukünftige Klassen