Bagaimana Mengendalikan Gelagat Tidak Dijangka Apabila Mengalih Keluar Item daripada Senarai Menggunakan Gelung?

Linda Hamilton
Lepaskan: 2024-10-19 11:38:01
asal
361 orang telah melayarinya

How to Handle Unexpected Behavior When Removing Items from Lists Using Loops?

Gelung Tidak Betul Semasa Mengalih Keluar Item daripada Senarai

Apabila mengulang senarai dan mengalih keluar item dalam gelung, anda mungkin menghadapi gelagat yang tidak dijangka. Pertimbangkan kod berikut:

<code class="python">letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l']
for i in letters:
    letters.remove(i)
print(letters)</code>
Salin selepas log masuk

Daripada mengalih keluar semua item seperti yang dijangkakan, kod ini menghasilkan output berikut:

['b', 'd', 'f', 'h', 'j', 'l']
Salin selepas log masuk

Tingkah laku yang kelihatan aneh ini dijelaskan oleh dokumentasi Python:

[I]t tidak selamat untuk mengubah suai jujukan yang diulang dalam gelung. Jika anda perlu mengubah suai senarai yang anda lelaran, anda mesti mengulangi salinan.

Dalam kes khusus ini, pembolehubah lelaran i semakin dikemas kini selepas mengalih keluar item, menyebabkan indeks item seterusnya dalam gelung yang akan dilangkau.

Menulis Semula untuk Pembuangan Item Tepat

Untuk membetulkan tingkah laku ini, anda harus mengulangi salinan senarai atau menggunakan kaedah alternatif untuk mengalih keluar item . Berikut ialah tiga pilihan:

  1. Padamkan keseluruhan senarai:
<code class="python">del letters[:]</code>
Salin selepas log masuk
  1. Ganti senarai dengan senarai kosong :
<code class="python">letters[:] = []</code>
Salin selepas log masuk
  1. Buat senarai baharu:
<code class="python">letters = []</code>
Salin selepas log masuk

Sebagai alternatif, jika anda perlu mengalih keluar tertentu item berdasarkan syarat, anda boleh menapis senarai menggunakan fungsi pemahaman atau filter():

<code class="python">letters = [letter for letter in letters if letter not in ['a', 'c', 'e', 'g', 'i', 'k']]</code>
Salin selepas log masuk
<code class="python">letters = list(filter(lambda letter: letter not in ['a', 'c', 'e', 'g', 'i', 'k'], letters))</code>
Salin selepas log masuk

Dengan mengikuti garis panduan ini, anda boleh memastikan penyingkiran item yang tepat dan cekap daripada senarai dalam Python .

Atas ialah kandungan terperinci Bagaimana Mengendalikan Gelagat Tidak Dijangka Apabila Mengalih Keluar Item daripada Senarai Menggunakan Gelung?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php
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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!