Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Semak sama ada Penjana Kosong dalam Python?

Bagaimana untuk Semak sama ada Penjana Kosong dalam Python?

Barbara Streisand
Barbara Streisandasal
2024-10-20 12:33:30399semak imbas

How to Check if a Generator is Empty in Python?

Mengesan Permulaan Penjana Kosong

Dalam Python, penjana ialah iterator yang menghasilkan nilai satu demi satu. Oleh itu, menentukan sama ada penjana kosong dari awal boleh menjadi satu cabaran. Tidak seperti senarai atau tupel, penjana tidak mempunyai panjang yang wujud atau kaedah isEmpty.

Menangani Cabaran

Untuk menangani perkara ini, satu pendekatan biasa melibatkan penggunaan fungsi pembantu untuk mengintip nilai pertama dalam penjana tanpa memakannya. Jika fungsi peek mengembalikan Tiada, ia menunjukkan bahawa penjana tidak mempunyai item.

Pelaksanaan Cadangan

Satu fungsi sedemikian, dinamakan peek, boleh dilaksanakan seperti berikut:

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

Menggunakan Peek untuk Menentukan Penjana Kosong

Untuk menentukan sama ada penjana kosong, anda boleh menggunakan fungsi mengintip dengan cara berikut:

<code class="python">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.</code>

Dalam contoh ini, jika penjana kosong, fungsi peek akan mengembalikan Tiada dan keadaan if akan menjadi benar. Jika tidak, blok else akan dilaksanakan. Dengan menggunakan pendekatan ini, anda boleh mengesan dengan berkesan jika penjana kosong dari permulaannya.

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

Kenyataan:
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