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

Mengapa Mengalih Keluar Elemen Senarai Semasa Lelaran dalam Python Membawa kepada Keputusan yang Tidak Dijangka?

Mary-Kate Olsen
Lepaskan: 2024-12-25 07:07:09
asal
558 orang telah melayarinya

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

Gelagat Tidak Dijangka: Mengalih keluar Elemen daripada Senarai Semasa Lelaran

Apabila cuba mengulangi senarai dan mengalih keluar elemen tertentu yang memenuhi kriteria tertentu, tingkah laku yang tidak dijangka mungkin berlaku jika senarai diubah suai semasa proses lelaran. Pertimbangkan kod Python berikut:

numbers = list(range(1, 50))

for i in numbers:
    if i < 20:
        numbers.remove(i)

print(numbers)
Salin selepas log masuk

Anehnya, keputusan yang diperoleh ialah:

[2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49]
Salin selepas log masuk

Kami menjangkakan nombor di bawah 20 akan dialih keluar, tetapi ia kekal dalam keputusan. Ini kerana senarai itu diubah suai semasa ia diulang. Apabila elemen pertama, 1, dialih keluar, kedudukan elemen seterusnya beralih dan gelung diteruskan ke elemen seterusnya dalam senarai yang diubah suai, yang bukan yang dijangkakan.

Untuk menyelesaikan isu ini dan dengan tepat lelaran ke atas senarai, kita boleh menggunakan pemahaman senarai atau perubahan di tempat. Pemahaman senarai membolehkan kami membuat senarai baharu dengan hanya elemen yang memenuhi syarat yang ditetapkan:

numbers = [n for n in numbers if n >= 20]
Salin selepas log masuk

Sebagai alternatif, pengubahan di tempat boleh dilakukan menggunakan penetapan keping:

numbers[:] = (n for n in numbers if n >= 20)
Salin selepas log masuk

Dengan mengubah suai senarai dengan cara ini, lelaran tidak terjejas dan hasil yang diingini boleh dicapai.

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