Mengapakah Pengubahsuaian Senarai Menyebabkan Elemen Dilangkau Semasa Lelaran dalam Python?

Barbara Streisand
Lepaskan: 2024-10-21 09:03:29
asal
628 orang telah melayarinya

Why Do List Modifications Cause Skipped Elements During Iteration in Python?

Anomali Lelaran Python: Melangkau Elemen Semasa Pengubahsuaian Senarai

Apabila melintasi senarai menggunakan gelung dalam Python, adalah penting untuk mengetahui potensi anomali yang boleh timbul daripada mengubah suai senarai semasa lelaran. Satu anomali sedemikian berlaku apabila elemen dialih keluar daripada senarai dalam gelung.

Pertimbangkan contoh berikut:

<code class="python">x = [1, 2, 2, 2, 2]

for i in x:
    x.remove(i)

print(x)  # Expected: [] but instead results in [2, 2]</code>
Salin selepas log masuk

Memang mengelirukan, selepas melaksanakan gelung ini, senarai x masih mengandungi dua elemen ( [2, 2]) bukannya kosong seperti yang dimaksudkan. Tingkah laku ini berpunca daripada cara Python mengendalikan lelaran senarai.

Mekanisme Lelaran

Apabila gelung for berulang pada senarai, ia mengekalkan penuding dalaman yang menghala ke elemen semasa sedang diperiksa. Walau bagaimanapun, apabila elemen dialih keluar daripada senarai, penunjuk tidak dikemas kini secara automatik untuk merujuk elemen seterusnya. Akibatnya, gelung melangkau elemen yang mengikuti elemen yang dialih keluar.

Mengelakkan Elemen yang Dilangkau

Untuk mengelakkan unsur yang dilangkau, pengubahsuaian senarai boleh dilakukan menggunakan salinan senarai asal. Kod yang diubah suai berikut menggunakan penghirisan untuk mencipta salinan senarai dan lelaran ke atasnya:

<code class="python">for i in x[:]:
    x.remove(i)</code>
Salin selepas log masuk

Operasi menghiris x[:] mencipta senarai baharu yang mengandungi semua elemen x. Salinan ini digunakan untuk lelaran, memastikan penunjuk dalaman mengemas kini dengan betul kepada elemen seterusnya selepas dialih keluar. Akibatnya, gelung berjaya mengalih keluar semua elemen daripada senarai.

Atas ialah kandungan terperinci Mengapakah Pengubahsuaian Senarai Menyebabkan Elemen Dilangkau Semasa Lelaran dalam Python?. 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!