Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich einen Python-Generator mehrmals wiederverwenden?

Wie kann ich einen Python-Generator mehrmals wiederverwenden?

DDD
DDDOriginal
2024-10-31 20:00:02343Durchsuche

How can I reuse a Python generator multiple times?

Wiederverwendung von Python-Generatorobjekten:

Generatoren, eine leistungsstarke Funktion in Python, sind Folgen von Werten, die bei Bedarf langsam berechnet werden. Aufgrund ihrer Beschaffenheit können Generatoren jedoch nicht zurückgespult werden. Wenn Sie einen Generator mehrmals wiederverwenden möchten, haben Sie mehrere Möglichkeiten:

1. Generatorfunktion neu starten:

Sie können die Generatorfunktion einfach erneut ausführen, um den Generierungsprozess erneut zu starten:

<code class="python">y = FunctionWithYield()
for x in y:
    print(x)
y = FunctionWithYield()
for x in y:
    print(x)</code>

2. Generatorergebnisse speichern:

Alternativ können Sie die Generatorergebnisse in einer speichererhaltenden Datenstruktur speichern, beispielsweise einer Liste oder einer Datei auf der Festplatte. Dadurch können Sie die Ergebnisse mehrmals durchlaufen:

<code class="python">y = list(FunctionWithYield())
for x in y:
    print(x)
# Can iterate again:
for x in y:
    print(x)</code>

Kompromisse:

Die Wahl zwischen diesen Optionen hängt von Ihren spezifischen Anforderungen ab:

  • Neustart: Dieser Ansatz erfordert keinen zusätzlichen Speicher, erfordert jedoch die Neuberechnung der Generatorwerte bei jedem Neustart.
  • Ergebnisse speichern: Diese Option ermöglicht mehrere Iterationen ohne Neuberechnung, verbraucht jedoch Speicher proportional zur Anzahl der Generatorwerte.

Im Wesentlichen stehen Sie vor dem klassischen Kompromiss zwischen Speichernutzung und Verarbeitungszeit. Es gibt keine perfekte Lösung, um einen Generator „zurückzuspulen“, ohne das eine oder das andere zu gefährden.

Das obige ist der detaillierte Inhalt vonWie kann ich einen Python-Generator mehrmals wiederverwenden?. 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