Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Apabila Mengulangi Melalui Senarai Python, Mengapa Anda Perlu Mengelakkan Mengalih Keluar Item?

Apabila Mengulangi Melalui Senarai Python, Mengapa Anda Perlu Mengelakkan Mengalih Keluar Item?

Barbara Streisand
Barbara Streisandasal
2024-10-19 11:16:29573semak imbas

When Iterating Through a Python List, Why Should You Avoid Removing Items?

Senarai Python: Kesalahan Pembuangan Item Semasa Lelaran

Lelaran melalui senarai Python sambil mengalih keluar item secara serentak boleh membawa kepada tingkah laku yang tidak dijangka. Contoh yang ketara ialah yang berikut:

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

Membingungkan, cetakan akhir huruf mendedahkan bahawa hanya setiap item lain telah dialih keluar.

Sebab Anomali

Tingkah laku ini berpunca daripada cara Python mengendalikan pengubahsuaian kepada boleh diulang semasa lelaran. Dokumentasi secara eksplisit menyatakan bahawa mengubah suai urutan yang diulang secara amnya adalah tidak selamat, terutamanya untuk jenis boleh ubah seperti senarai.

Amalan ini boleh membawa kepada tingkah laku yang tidak ditentukan dan potensi perubahan dalam binaan Python akan datang.

Pendekatan Betul untuk Mengalih Keluar Semua Item

Untuk mengalih keluar semua item dengan selamat daripada senarai, gunakan mana-mana kaedah berikut:

  • huruf del[:] untuk memadam semua elemen dan rujukan kepada objek senarai.
  • huruf[:] = [] untuk menetapkan senarai kosong baharu kepada pembolehubah sedia ada, meninggalkan rujukan kepada objek asal tetap utuh.
  • huruf = [] untuk mencipta senarai kosong baharu dan menetapkannya kepada pembolehubah baharu.

Mengendalikan Pembuangan Item Bersyarat

Untuk mengalih keluar item bersyarat, buat salinan senarai menggunakan sintaks hirisan [:]:

<code class="python">commands = ["ls", "cd", "rm -rf /"]
for cmd in commands[:]:
    if "rm " in cmd:
        commands.remove(cmd)</code>

Sebagai alternatif, gunakan fungsi penapis untuk mengecualikan item yang tidak diingini:

<code class="python">commands = [cmd for cmd in commands if not is_malicious(cmd)]</code>

Atas ialah kandungan terperinci Apabila Mengulangi Melalui Senarai Python, Mengapa Anda Perlu Mengelakkan Mengalih Keluar Item?. 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