Rumah > pembangunan bahagian belakang > Tutorial Python > Mengapa Mengubah Suai Senarai Python Semasa Lelaran Membawa kepada Keputusan Yang Tidak Dijangka?

Mengapa Mengubah Suai Senarai Python Semasa Lelaran Membawa kepada Keputusan Yang Tidak Dijangka?

Barbara Streisand
Lepaskan: 2024-12-27 18:36:11
asal
943 orang telah melayarinya

Why Does Modifying a Python List During Iteration Lead to Unexpected Results?

Pengubahan Senarai Berulang dalam Python: Memahami Akibat

Dalam Python, mengubah suai senarai sambil mengulanginya boleh membawa kepada hasil yang tidak dijangka. Pertimbangkan kod berikut:

numbers = list(range(1, 50))

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

print(numbers)
Salin selepas log masuk

Daripada mengalih keluar nombor di bawah 20, seperti yang dimaksudkan, kod ini mencetak senarai di mana semua nombor di bawah 20 hilang, bersama-sama dengan 20 itu sendiri.

Masalahnya : Anjakan Kedudukan Iterator

Isu ini berpunca daripada fakta bahawa mengalih keluar item daripada senarai mengubah kedudukan item seterusnya. Semasa gelung berlangsung, item yang diperiksa bukan lagi yang dijangka, kerana elemen yang dialih keluar mencipta "lubang" dalam senarai.

Sebagai contoh, semasa lelaran awal, 1 dialih keluar, tetapi lelaran seterusnya tidak menyemak 2; sebaliknya, ia menyemak 3 kerana senarai telah dipendekkan. Tingkah laku ini berterusan, mengakibatkan output yang salah.

Teknik Pengubahan Senarai yang Betul

Untuk mengelakkan masalah ini, gunakan kaedah alternatif untuk mengubah senarai semasa lelaran, seperti:

  • Senarai Pemahaman:
numbers = [n for n in numbers if n >= 20]
Salin selepas log masuk
  • Pengubahan Di Tempat:
numbers[:] = (n for n in numbers if n >= 20)
Salin selepas log masuk
  • Penghitungan :
for i, n in enumerate(numbers):
    if n < 20:
        numbers[i] = None
numbers = [n for n in numbers if n is not None]
Salin selepas log masuk

Ini teknik tidak mengubah suai panjang senarai semasa berulang, memastikan pemprosesan item yang betul dan output yang diingini.

Atas ialah kandungan terperinci Mengapa Mengubah Suai 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