Teka-teki Pengubahsuaian Senarai Lelaran Python
Apabila memanipulasi senarai dalam Python, adalah penting untuk memahami cara lelaran boleh menjejaskan struktur asas. Khususnya, Python mempamerkan gelagat yang tidak dijangka apabila mengubah suai senarai sambil mengulanginya.
Pertimbangkan kod berikut:
<code class="python">x = [1, 2, 2, 2, 2] for i in x: x.remove(i) print(x)</code>
Niat kod ini adalah untuk mengalih keluar semua elemen daripada senarai . Walau bagaimanapun, apabila dilaksanakan, hasilnya ialah senarai dengan dua elemen yang tinggal.
Isu Asas
Mekanisme lelaran Python berfungsi dengan mencipta objek lelaran, yang menyediakan akses kepada urutan nilai. Apabila anda mengulangi senarai, tika iterator mengekalkan penunjuk dalaman kepada elemen semasa dalam jujukan.
Mengubah suai senarai semasa lelaran, seperti dengan mengalih keluar atau menambah elemen, membatalkan lelaran. Penunjuk menjadi dinyahrujuk, dan lelaran berkelakuan tidak dapat diramalkan.
Menggunakan Salin Dihiris
Untuk menyelesaikan isu ini, anda boleh membuat salinan hirisan senarai asal dan lelaran sebaliknya:
<code class="python">for i in x[:]: x.remove(i)</code>
Sintaks [:] mengembalikan salinan senarai x. Dengan mengulangi salinan ini, anda mengelak daripada mengubah suai senarai asal semasa lelaran, memastikan bahawa lelaran kekal sah.
Oleh itu, apabila bekerja dengan senarai dalam Python, adalah penting untuk mengambil kira kemungkinan akibat daripada mengubah suai senarai sambil mengulang. Menggunakan salinan yang dihiris membolehkan anda mengubah suai senarai dengan selamat dan cekap.
Atas ialah kandungan terperinci Apabila Mengubah Suai Senarai Semasa Lelaran, Patutkah Anda Menggunakan Salinan Terhiris atau Menghadapi Gelagat Tidak Dijangka?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!