Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mengulang dan Mengeluarkan Item dengan Selamat dari Senarai Python?

Bagaimana untuk Mengulang dan Mengeluarkan Item dengan Selamat dari Senarai Python?

Susan Sarandon
Susan Sarandonasal
2024-10-19 11:52:29689semak imbas

How to Safely Iterate and Remove Items from a Python List?

Memahami Bahaya Mengalih Keluar Item daripada Senarai Semasa Lelaran

Dalam percubaan untuk mengalih keluar semua elemen daripada senarai sambil mengulanginya, pengguna mungkin menghadapi tingkah laku yang tidak dijangka. Mari kita periksa coretan kod yang menggambarkan isu ini:

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

Membingungkan, output kod ini ialah ['b', 'd', 'f', 'h', 'j', 'l ']. Daripada mengalih keluar semua elemen, ia nampaknya telah mengalih keluar setiap elemen lain.

Punca Punca

Pemahaman senarai Python berkelakuan berbeza dalam kes sedemikian. Seperti yang dijelaskan oleh dokumentasi, "Tidak selamat untuk mengubah suai urutan yang diulang dalam gelung." Dengan mengalih keluar elemen daripada senarai sambil mengulanginya, indeks elemen seterusnya menjadi tidak betul. Akibatnya, gelung melangkau elemen, membawa kepada corak yang diperhatikan.

Alternatif Selamat

Untuk mengalih keluar semua elemen daripada senarai dengan selamat, terdapat beberapa pilihan:

  1. Menggunakan del: Pendekatan ini mengalih keluar semua elemen dan meninggalkan senarai kosong:

    <code class="python">del letters[:]</code>
  2. Menggunakan huruf [:] = []: Ini mencipta senarai kosong baharu, membuang senarai lama:

    <code class="python">letters[:] = []</code>
  3. Menetapkan senarai baharu: Ini mencipta objek berasingan:

    <code class="python">letters = []</code>
  4. Menapis senarai: Apabila secara selektif mengalih keluar elemen, mengulangi salinan senarai disyorkan:

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

Sebagai alternatif, senarai boleh ditapis dengan lebih ringkas:

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

Atas ialah kandungan terperinci Bagaimana untuk Mengulang dan Mengeluarkan Item dengan Selamat dari Senarai Python?. 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