Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana Mengendalikan Gelagat Tidak Dijangka Apabila Mengalih Keluar Item daripada Senarai Menggunakan Gelung?

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

Linda Hamilton
Linda Hamiltonasal
2024-10-19 11:38:01362semak imbas

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>

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

['b', 'd', 'f', 'h', 'j', 'l']

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>
  1. Ganti senarai dengan senarai kosong :
<code class="python">letters[:] = []</code>
  1. Buat senarai baharu:
<code class="python">letters = []</code>

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>
<code class="python">letters = list(filter(lambda letter: letter not in ['a', 'c', 'e', 'g', 'i', 'k'], letters))</code>

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!

Kenyataan:
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