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:
<code class="python">del letters[:]</code>
<code class="python">letters[:] = []</code>
<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!