Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Mengubah Suai dengan Selamat Rentetan dalam Senarai Semasa Lelaran dalam Python?

Bagaimanakah Saya Boleh Mengubah Suai dengan Selamat Rentetan dalam Senarai Semasa Lelaran dalam Python?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-20 14:46:23157semak imbas

How Can I Safely Modify Strings Within a List During Iteration in Python?

Mengulang dan Mengubah Suai Senarai Dengan Selamat

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!

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