Rumah > pembangunan bahagian belakang > Tutorial Python > 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
Lepaskan: 2024-10-19 11:16:29
asal
664 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

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