Rumah > pembangunan bahagian belakang > Tutorial Python > 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
Lepaskan: 2024-11-25 05:55:12
asal
606 orang telah melayarinya

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)
Salin selepas log masuk

Apabila anda menjalankan kod ini, anda mungkin mengharapkan outputnya be:

0
1
2
3
4
8
9
Salin selepas log masuk
Salin selepas log masuk

Walau bagaimanapun, sebaliknya, ia menghasilkan perkara berikut:

0
1
2
3
4
8
6
7
8
9
Salin selepas log masuk

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
Salin selepas log masuk

Kod ini akan menghasilkan output yang dijangkakan:

0
1
2
3
4
8
9
Salin selepas log masuk
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan