Bagaimana untuk Mengelakkan Elemen Tidak Dijangka Melangkau dalam Senarai Python Semasa Pengubahsuaian Lelaran?

Mary-Kate Olsen
Lepaskan: 2024-10-21 09:07:02
asal
798 orang telah melayarinya

How to Avoid Unexpected Element Skipping in Python Lists During Iteration Modification?

Elemen Tidak Dijangka Melangkau dalam Senarai Python Semasa Pengubahsuaian Lelaran

Dalam Python, mengubah suai senarai sambil mengulanginya menggunakan untuk gelung boleh membawa kepada tingkah laku yang tidak dijangka, seperti unsur yang hilang. Pertimbangkan contoh ini:

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

for i in x:
    x.remove(i)

print(x)</code>
Salin selepas log masuk

Hasil yang dijangkakan ialah senarai kosong, tetapi output sebenar ialah [2, 2]. Untuk memahami tingkah laku ini, adalah penting untuk memahami bahawa Python tidak mengubah suai senarai asas semasa lelaran. Sebaliknya, ia beroperasi pada "salinan" senarai.

Apabila x.remove(i) dipanggil, ia mengubah suai senarai x asal, manakala gelung terus berulang ke atas "salinan" x yang tidak diubah suai . Oleh itu, apabila lelaran berikutnya menemui elemen yang diubah suai bagi senarai x asal, ia tidak lagi wujud dalam "salinan" dan dilangkau.

Untuk menangani isu ini, gunakan kod berikut:

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

Pengendali hirisan [:] menjana salinan x, jadi gelung berulang pada salinan ini sementara pengubahsuaian digunakan pada senarai x asal. Ini memastikan bahawa semua elemen dialih keluar seperti yang dimaksudkan.

Sentiasa ingat untuk berhati-hati apabila mengubah suai senarai semasa lelaran, kerana tingkah laku yang tidak dijangka boleh timbul disebabkan cara Python mengendalikan operasi ini.

Atas ialah kandungan terperinci Bagaimana untuk Mengelakkan Elemen Tidak Dijangka Melangkau dalam Senarai Python Semasa Pengubahsuaian Lelaran?. 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!