Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Mengubah Suai dengan Selamat Rentetan dalam Senarai Semasa Lelaran dalam Python?
Masalah:
Mengubah suai senarai semasa Python untuk gelung biasanya tidak disyorkan. Walau bagaimanapun, bagaimana jika anda perlu mengubah suai rentetan dalam senarai? Adakah menggantikan nilai boleh ubah ini dikira sebagai pengubahsuaian yang dilarang?
Jawapan:
Selagi anda mengubah suai elemen dalam senarai yang telah diulang, ia dianggap boleh diterima. Contohnya:
a = ['a',' b', 'c ', ' d '] for i, s in enumerate(a): a[i] = s.strip() print(a) # -> ['a', 'b', 'c', 'd']
Kod ini berulang pada senarai a dan menghilangkan ruang putih daripada setiap rentetan. Ia berbuat demikian tanpa membuat senarai baharu dan menyerahkannya kepada yang asal.
Walau bagaimanapun, mengubah bilangan item dalam senarai semasa lelaran adalah berisiko. Contohnya:
b = ['a', ' b', 'c ', ' d '] for i, s in enumerate(b): if s.strip() != b[i]: # leading or trailing whitespace? del b[i] print(b) # -> ['a', 'c '] # WRONG!
Kod ini cuba memadamkan elemen dengan ruang putih di hadapan atau di belakang daripada senarai b. Malangnya, ia gagal kerana pemadaman elemen mengganggu pengindeksan lelaran berikutnya.
Awas:
Perlu ambil perhatian bahawa semasa anda boleh mengubah suai elemen dalam senarai dengan selamat seperti yang diterangkan , sebarang percubaan untuk menambah atau mengurangkan bilangan elemen boleh membawa kepada kesilapan tingkah laku.
Pemadaman Di Tempat:
Jika anda ingin memadamkan entri dengan berkesan semasa lelaran, gunakan pemahaman senarai:
b = ['a',' b', 'c ', ' d '] b[:] = [entry for entry in b if entry.strip() == entry] print(b) # -> ['a'] # CORRECT
Kod ini mencipta senarai baharu yang mengandungi hanya entri tanpa ruang kosong di hadapan atau di belakang, dengan berkesan mengalih keluar elemen yang tidak diingini "di tempat."
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengubah Suai dengan Selamat Rentetan dalam Senarai Semasa Lelaran dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!