Lelaran Dua Kali Daripada Yang Tidak Boleh Digunakan Semula: Mengapa dan Cara Tetapkan Semula
Menyalurkan dua kali pada struktur data boleh menjadi masalah apabila berurusan dengan iterator , yang hanya boleh dimakan sekali sahaja. Dalam Python, iterator digunakan dalam iterator senarai, ungkapan penjana dan pelbagai objek lain.
Pertimbangkan kod berikut:
def test(data): for row in data: print("first loop") for row in data: print("second loop")
Apabila data ialah lelaran, seperti lelaran senarai atau ungkapan penjana, kod mencetak "gelung pertama" tetapi bukan "gelung kedua" kerana lelaran telah digunakan dalam gelung pertama.
Kepada memahami mengapa ini berlaku, kita perlu tahu cara iterator berfungsi. Iterator ialah objek stateful yang berulang pada jujukan nilai. Semasa lelaran, keadaan lelaran dikemas kini dan apabila nilai terakhir dikembalikan, lelaran terhenti untuk selama-lamanya.
Oleh itu, apabila kita cuba mengulangi lelaran yang sama untuk kali kedua, ia serta-merta menimbulkan pengecualian StopIteration , menandakan bahawa tiada lagi nilai yang perlu diambil. Ini secara berkesan menamatkan gelung kedua.
Penyelesaian untuk Menggunakan Semula Tidak Boleh Digunakan Semula
Untuk menggunakan semula iterator, kita boleh sama ada:
Dengan memahami sifat iterator dan menggunakan penyelesaian ini, kami boleh mengendalikan situasi di mana kami perlu mengulang data beberapa kali dalam Python dengan berkesan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengulang Dua Kali Ke Atas Iterator Tidak Boleh Digunakan Semula dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!