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!