Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapa Tidak Mengubah Suai Elemen Senarai Secara Terus dalam Gelung Python Berfungsi?

Mengapa Tidak Mengubah Suai Elemen Senarai Secara Terus dalam Gelung Python Berfungsi?

Barbara Streisand
Barbara Streisandasal
2024-12-06 16:08:13826semak imbas

Why Doesn't Modifying List Elements Directly in a Python Loop Work?

Mengapa Mengubah Suai Elemen Senarai dalam Gelung Python Terbukti Tidak Berhasil

Semasa melintasi senarai dalam Python, ramai pengaturcara menghadapi halangan yang tidak dijangka: ketidakupayaan untuk mengubah suai elemennya melalui gelung tradisional. Untuk menggambarkan:

li = ["spam", "eggs"]
for i in li:
    i = "foo"

print(li)
# Output: ["spam", "eggs"]

Walaupun penugasan jelas "foo" untuk menyenaraikan elemen, senarai itu kekal tidak berubah. Tingkah laku yang membingungkan ini berpunca daripada cara Python mengendalikan gelung dengan senarai.

Di sebalik tabir, gelung Python beroperasi dengan mengulangi indeks senarai. Dalam contoh di atas, untuk setiap indeks (sepadan dengan item dalam senarai), pembolehubah sementara baharu i dicipta. Tugasan kepada i hanya mempengaruhi pembolehubah setempat ini, meninggalkan elemen senarai sebenar tidak disentuh.

Untuk berjaya mengubah suai elemen senarai, seseorang mesti menggunakan pemahaman senarai seperti dalam contoh yang disediakan:

li = ["foo" for i in li]
print(li)
# Output: ["foo", "foo"]

Sebagai alternatif, ulangi indeks secara terus:

for idx in range(len(li)):
    li[idx] = "foo"

print(li)
# Output: ["foo", "foo"]

Sebagai alternatif, manfaatkan enumerate() fungsi:

for idx, item in enumerate(li):
    li[idx] = "foo"

print(li)
# Output: ["foo", "foo"]

Dengan menerima penyelesaian ini, pengaturcara dengan yakin boleh mengubah suai elemen senarai dalam gelung, mengelakkan tugasan sia-sia yang meninggalkan senarai mereka tanpa diubah.

Atas ialah kandungan terperinci Mengapa Tidak Mengubah Suai Elemen Senarai Secara Terus dalam Gelung Python Berfungsi?. 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