Rumah > pembangunan bahagian belakang > Tutorial Python > Mengapakah Saya Tidak Boleh Mengulangi Ulangan Dua Kali?

Mengapakah Saya Tidak Boleh Mengulangi Ulangan Dua Kali?

Linda Hamilton
Lepaskan: 2024-12-21 02:26:09
asal
837 orang telah melayarinya

Why Can't I Iterate Over an Iterator Twice?

Mengapa Iterables Tidak Boleh Diulang Dua Kali

Apabila berurusan dengan iterator dan iterables, memahami sifat penggunaannya adalah penting. Dalam Python, iterator hanya boleh digunakan sekali. Ini bermakna sebaik sahaja anda mengulangi lelaran, ia habis dan tidak boleh digunakan lagi.

Pertimbangkan kod berikut:

def test(data):
    for row in data:
        print("first loop")
    for row in data:
        print("second loop")
Salin selepas log masuk

Jika data ialah lelaran bukan kosong (mis., a senarai iterator atau ungkapan penjana), kod akan mencetak "gelung pertama" beberapa kali, tetapi "gelung kedua" tidak akan dicetak. Ini kerana lelaran telah digunakan semasa gelung pertama.

Isu yang sama timbul dengan bentuk lelaran lain, seperti pemahaman senarai/set/dikt, panggilan ke senarai(), jumlah(), atau kurangkan (), dan seterusnya.

Walau bagaimanapun, jika data adalah satu lagi boleh lelar seperti senarai atau julat (yang merupakan jujukan), kedua-dua gelung akan dilaksanakan seperti yang dijangkakan, mencetak "gelung pertama" dan "gelung kedua" untuk setiap elemen. Ini kerana iterable ini boleh diulang beberapa kali.

Untuk mengulangi, apabila menggunakan iterator, adalah penting untuk mengingati sifat penggunaan tunggal mereka. Untuk menggunakan semula data, pertimbangkan untuk menyimpan elemen ke senarai atau menggunakan itertools.tee() untuk mencipta iterator bebas.

Atas ialah kandungan terperinci Mengapakah Saya Tidak Boleh Mengulangi Ulangan Dua 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan