Rumah >pembangunan bahagian belakang >Tutorial Python >Adakah Mengubah Suai Entri Senarai Semasa Lelaran Selamat, dan Bagaimana Saya Boleh Melakukannya dengan Betul?

Adakah Mengubah Suai Entri Senarai Semasa Lelaran Selamat, dan Bagaimana Saya Boleh Melakukannya dengan Betul?

DDD
DDDasal
2024-12-18 16:08:15677semak imbas

Is Modifying List Entries During Iteration Safe, and How Can I Do It Correctly?

Mengubah suai Entri Senarai Semasa Lelaran Gelung

Secara amnya tidak digalakkan untuk mengubah suai senarai semasa gelung berulang. Walau bagaimanapun, apabila bekerja dengan senarai rentetan yang memerlukan manipulasi rentetan, seseorang mungkin tertanya-tanya sama ada menggantikan rentetan dalam senarai itu merupakan pengubahsuaian.

Adakah Pengubahsuaian Mutasi Nilai Di Tempat?

Pendekatan berikut dianggap boleh diterima kerana ia mengubah suai elemen selepas ianya diproses:

a = ['a', ' b', 'c ', ' d ']

for i, s in enumerate(a):
    a[i] = s.strip()

print(a) # ['a', 'b', 'c', 'd']

Bezakan ini dengan pendekatan berikut:

a[:] = [s.strip() for s in a]

Yang terakhir memerlukan membuat senarai sementara dan menetapkannya, yang boleh menjadi mahal dari segi pengiraan berbanding dengan pengubahsuaian di tempat .

Awas: Mengemas kini Panjang

Walaupun mutasi nilai di tempat dibenarkan, mengubah panjang senarai boleh membawa kepada masalah. Memadamkan elemen semasa lelaran, contohnya, boleh mengakibatkan pengindeksan yang salah:

b = ['a', ' b', 'c ', ' d ']

for i, s in enumerate(b):
    if s.strip() != b[i]:  # Check for whitespace
        del b[i]

print(b) # ['a', 'c '] # Incorrect result

Pemadaman Berkesan Semasa Gelung

Untuk memadamkan entri di tempat dengan berkesan semasa lelaran, pertimbangkan pendekatan berikut:

b = ['a', ' b', 'c ', ' d ']

b[:] = [entry for entry in b if entry.strip() == entry]

print(b) # ['a'] # Correct result

Kesimpulannya, walaupun senarai boleh diubah suai entri semasa gelung untuk melalui mutasi nilai di tempat, adalah penting untuk berhati-hati apabila mengubah suai panjang senarai untuk mengelakkan akibat yang tidak dijangka. Memadamkan entri, khususnya, memerlukan pengendalian khas untuk mengekalkan integriti lelaran.

Atas ialah kandungan terperinci Adakah Mengubah Suai Entri Senarai Semasa Lelaran Selamat, dan Bagaimana Saya Boleh Melakukannya dengan Betul?. 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