Rumah > Artikel > pembangunan bahagian belakang > Mengapa Tidak Mengubah Suai Pembolehubah Lelaran For Loop Mempengaruhi Lelaran Seterusnya dalam Python?
Manipulasi Pembolehubah Lelaran dalam Python's For Loop: Mengapa Perubahan Tidak Mempengaruhi Lelaran Seterusnya
Dalam Python, for loops sering digunakan untuk mengulang atas urutan nilai. Walau bagaimanapun, salah tanggapan biasa ialah mengubah suai pembolehubah lelaran semasa gelung boleh menjejaskan lelaran berikutnya.
Masalahnya
Pertimbangkan coretan kod Python berikut:
for i in range(0, 10): if i == 5: i += 3 print(i)
Apabila anda menjalankan kod ini, anda mungkin mengharapkan outputnya be:
0 1 2 3 4 8 9
Walau bagaimanapun, sebaliknya, ia menghasilkan perkara berikut:
0 1 2 3 4 8 6 7 8 9
Penjelasan
Sebab bagi tingkah laku yang tidak dijangka ini terletak pada bagaimana untuk gelung berfungsi dalam Python. Tidak seperti dalam beberapa bahasa lain, seperti C, Python tidak mencipta skop baharu untuk pembolehubah di dalam gelung. Sebaliknya, ia mengikat semula pembolehubah lelaran kepada setiap nilai dalam jujukan.
Dalam kod yang diberikan, iterator i diberikan kepada setiap nombor dalam julat(0, 10) jujukan. Apabila anda mengubah suai i di dalam gelung, anda hanya menukar nilai semasa lelaran, bukan urutan itu sendiri. Lelaran seterusnya terus menggunakan nilai asal dalam jujukan, itulah sebabnya anda melihat output yang tidak dijangka.
Remedy
Untuk mencapai tingkah laku yang diingini dengan mengubah suai lelaran pembolehubah mempengaruhi lelaran berikutnya, anda boleh menggunakan gelung sementara sebagai gantinya. Walaupun gelung membenarkan anda menambah atau mengubah suai pembolehubah lelaran secara manual dalam gelung itu sendiri:
i = 0 while i < 10: # do stuff and manipulate `i` as much as you like if i == 5: i += 3 print(i) # don't forget to increment `i` manually i += 1
Kod ini akan menghasilkan output yang dijangkakan:
0 1 2 3 4 8 9
Atas ialah kandungan terperinci Mengapa Tidak Mengubah Suai Pembolehubah Lelaran For Loop Mempengaruhi Lelaran Seterusnya dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!