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)
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 ^
Menjawab Soalan yang Selebihnya
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!