Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapa Tidak Mengubah Suai Pembolehubah Lelaran For Loop Mempengaruhi Lelaran Seterusnya dalam Python?

Mengapa Tidak Mengubah Suai Pembolehubah Lelaran For Loop Mempengaruhi Lelaran Seterusnya dalam Python?

Linda Hamilton
Linda Hamiltonasal
2024-11-25 05:55:12521semak imbas

Why Doesn't Modifying a For Loop's Iteration Variable Affect Subsequent Iterations in 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!

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