Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Mengulang Dua Kali Ke Atas Iterator Tidak Boleh Digunakan Semula dalam Python?

Bagaimanakah Saya Boleh Mengulang Dua Kali Ke Atas Iterator Tidak Boleh Digunakan Semula dalam Python?

Patricia Arquette
Patricia Arquetteasal
2024-12-25 09:55:39775semak imbas

How Can I Iterate Twice Over a Non-Reusable Iterator in Python?

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:

  1. Tukar kepada Senarai: Tukar lelaran kepada senarai menggunakan list(), yang menghasilkan petikan data. Senarai ini boleh diulang berbilang kali tanpa sebarang isu.
  2. Gunakan tee() untuk Mencipta Lelaran Bebas: Dalam kes di mana kami memerlukan berbilang lelaran ke atas data, kami boleh menggunakan itertools.tee () untuk mencipta pelbagai iterator bebas. Setiap iterator boleh diulang secara berasingan tanpa menjejaskan yang lain.

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!

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