Rumah > pembangunan bahagian belakang > Tutorial Python > Mengapa Mengalih Keluar Elemen daripada Senarai Python Semasa Lelaran Menghasilkan Keputusan yang Tidak Dijangka?

Mengapa Mengalih Keluar Elemen daripada Senarai Python Semasa Lelaran Menghasilkan Keputusan yang Tidak Dijangka?

Patricia Arquette
Lepaskan: 2024-12-04 18:11:12
asal
992 orang telah melayarinya

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

Mengalih keluar daripada Senarai Sambil Mengulangkannya

Apabila mengulang senarai dan mengalih keluar elemen, tingkah laku Python boleh membingungkan. Coretan kod di bawah:

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

Output [0, 2, 3, 5, 6, 8, 9], bukannya yang dijangkakan [0, 2, 4, 6, 8].

Memahami Gelagat Penyingkiran Berulang

Ini output terhasil daripada cara Python mengendalikan jujukan boleh ubah semasa lelaran. Apabila alih keluar dipanggil, senarai asas diubah suai. Walau bagaimanapun, iterator tetap sama dan terus merentasi senarai yang diubah suai.

Rajah di bawah menggambarkan proses penyingkiran:

[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

Menjawab Soalan yang Selebihnya

  1. Petunjuk Ralat: Python tidak membuang ralat kerana ia akan menanggung overhed masa jalan. Ia menganggap bahawa pengaturcara mengetahui akibat mengubah suai senarai semasa lelaran dan mengendalikannya dengan sewajarnya.
  2. Gelagat Sejarah: Tingkah laku ini telah wujud dalam Python sejak versi awal (sekurang-kurangnya 1.4), dan adalah konsisten dengan cara jujukan boleh ubah biasanya dilaksanakan.

Atas ialah kandungan terperinci Mengapa Mengalih Keluar Elemen daripada Senarai Python Semasa Lelaran Menghasilkan 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