Bagaimanakah saya boleh menggunakan semula penjana Python beberapa kali?

DDD
Lepaskan: 2024-10-31 20:00:02
asal
347 orang telah melayarinya

How can I reuse a Python generator multiple times?

Menggunakan Semula Objek Penjana Python:

Penjana, ciri berkuasa dalam Python, ialah jujukan nilai yang dikira secara malas atas permintaan. Walau bagaimanapun, disebabkan sifatnya, penjana tidak boleh diputar semula. Jika anda ingin menggunakan semula penjana beberapa kali, anda mempunyai beberapa pilihan:

1. Memulakan Semula Fungsi Penjana:

Anda boleh menjalankan semula fungsi penjana untuk memulakan semula proses penjanaan:

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

2. Menyimpan Keputusan Penjana:

Sebagai alternatif, anda boleh menyimpan hasil penjana dalam struktur data pengekalan memori, seperti senarai atau fail pada cakera. Ini membolehkan anda mengulangi keputusan berbilang kali:

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

Tradeoff:

Pilihan antara pilihan ini bergantung pada keperluan khusus anda:

  • Memulakan semula: Pendekatan ini tidak memerlukan sebarang memori tambahan, tetapi ia melibatkan pengiraan semula nilai penjana setiap kali anda memulakan semula.
  • Menyimpan hasil: Pilihan ini membenarkan berbilang lelaran tanpa pengiraan semula, tetapi ia menggunakan memori yang berkadar dengan bilangan nilai penjana.

Pada dasarnya, anda menghadapi pertukaran klasik antara penggunaan memori dan masa pemprosesan. Tiada penyelesaian yang sempurna untuk "menggulung semula" penjana tanpa menjejaskan satu atau yang lain.

Atas ialah kandungan terperinci Bagaimanakah saya boleh menggunakan semula penjana Python beberapa kali?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan