Apabila Mengubah Suai Senarai Semasa Lelaran, Patutkah Anda Menggunakan Salinan Terhiris atau Menghadapi Gelagat Tidak Dijangka?

Patricia Arquette
Lepaskan: 2024-10-21 09:00:29
asal
846 orang telah melayarinya

When Modifying Lists During Iterations, Should You Use Sliced Copies or Face Unexpected Behavior?

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php
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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!