Bagaimana untuk Semak sama ada Penjana Kosong Sebelum Mengulang?

Patricia Arquette
Lepaskan: 2024-10-20 12:12:30
asal
932 orang telah melayarinya

How to Check if a Generator is Empty Before Iterating?

Menentukan Kekosongan Penjana Sebelum Lelaran

Apabila bekerja dengan penjana, ia boleh memberi manfaat untuk memastikan sama ada penjana kosong terlebih dahulu. Ini mengelakkan pemprosesan yang tidak perlu dan mengurangkan kerumitan kod.

Untuk mencapai matlamat ini, satu pendekatan ialah menggunakan fungsi mengintip, yang cuba mendapatkan semula elemen pertama penjana. Jika pengecualian StopIteration dinaikkan, ia menandakan penjana kosong. Berikut ialah pelaksanaan:

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

Dalam fungsi ini:

  • next(iterable) mendapatkan semula elemen pertama penjana atau menimbulkan pengecualian StopIteration jika kosong.
  • Hasilnya disimpan dahulu. Jika kosong, pertama ialah Tiada.
  • Untuk mengekalkan keadaan penjana, iterable asal dibalut dengan yang baharu menggunakan itertools.chain([first], iterable).

Anda boleh menggunakan fungsi ini seperti berikut:

<code class="python">res = peek(mysequence)
if res is None:
    # Generator is empty
elif res[0] is None:
    # Generator is not empty but first element is None
else:
    # Generator is not empty with non-None first element</code>
Salin selepas log masuk

Pendekatan ini secara berkesan menentukan kekosongan penjana sebelum lelaran, menyediakan cara yang mudah untuk mengoptimumkan kod anda dan mengendalikan penjana kosong dengan anggun.

Atas ialah kandungan terperinci Bagaimana untuk Semak sama ada Penjana Kosong Sebelum Mengulang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!