Rumah > pembangunan bahagian belakang > Tutorial Python > Mengapa Mengalih Keluar Elemen daripada Senarai Python Semasa Lelaran Membawa kepada Keputusan Yang Tidak Dijangka?

Mengapa Mengalih Keluar Elemen daripada Senarai Python Semasa Lelaran Membawa kepada Keputusan Yang Tidak Dijangka?

Mary-Kate Olsen
Lepaskan: 2024-12-01 12:34:10
asal
165 orang telah melayarinya

Why Does Removing Elements from a Python List During Iteration Lead to Unexpected Results?

Memahami Pengalihan Keluar Senarai Semasa Lelaran dalam Python

Semasa mengulang senarai, anda mungkin perlu mengalih keluar elemen. Walau bagaimanapun, berbuat demikian boleh membawa kepada tingkah laku yang tidak dijangka jika pengalihan keluar tidak dikendalikan dengan betul.

Pertimbangkan kod Python:

a = list(range(10))
remove = False
for b in a:
    if remove:
        a.remove(b)
    remove = not remove
print(a)
Salin selepas log masuk

Kod ini menghasilkan output [0, 2, 3, 5 , 6, 8, 9], bukannya jangkaan [0, 2, 4, 6, 8]. Anomali ini timbul kerana cara Python mengendalikan objek boleh ubah semasa melakukan lelaran.

Penjelasan Visual Isu

Jujukan operasi boleh divisualisasikan seperti berikut:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]       | b = 0; remove? no
   ^                              
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]       | b = 1; remove? yes
      ^                           
[0, 2, 3, 4, 5, 6, 7, 8, 9]          | b = 3; remove? no
         ^                        
[0, 2, 3, 4, 5, 6, 7, 8, 9]          | b = 4; remove? yes
            ^                     
[0, 2, 3, 5, 6, 7, 8, 9]             | b = 6; remove? no
               ^                  
[0, 2, 3, 5, 6, 7, 8, 9]             | b = 7; remove? yes
                  ^               
[0, 2, 3, 5, 6, 8, 9]                | b = 9; remove? no
                     ^            
Salin selepas log masuk

Tiada Ralat Petunjuk

Python tidak mengeluarkan ralat apabila lelaran yang mendasari diubah suai kerana menentukan masa dan cara mutasi akan menjejaskan lelaran akan memerlukan analisis masa jalan yang meluas, dengan ketara memperlahankan pelaksanaan.

Ketekalan Tingkah Laku

Tingkah laku yang diterangkan dalam contoh ini mempunyai kekal konsisten merentas versi Python, memastikan pelaksanaan kod yang boleh diramal yang mengubah suai objek boleh ubah semasa lelaran.

Atas ialah kandungan terperinci Mengapa Mengalih Keluar Elemen daripada Senarai Python Semasa Lelaran Membawa kepada Keputusan Yang Tidak Dijangka?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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