Python For 循環中的迭代變數操作:為什麼變更不會影響後續迭代
在Python 中,for 迴圈常用於迭代超過一系列值。然而,一個常見的誤解是,在循環期間修改迭代變數會影響後續迭代。
問題
考慮以下 Python 程式碼片段:
for i in range(0, 10): if i == 5: i += 3 print(i)
當您執行此程式碼時,您可能會期望輸出為be:
0 1 2 3 4 8 9
然而,它會產生以下結果:
0 1 2 3 4 8 6 7 8 9
解釋
這種意外行為的原因在於for 循環在Python 中如何運作。與其他一些語言(例如 C)不同,Python 不會為迴圈內的變數建立新的作用域。相反,它將迭代變數重新綁定到序列中的每個值。
在給定的程式碼中,迭代器 i 被分配給 range(0, 10) 序列中的每個數字。當您在循環內修改 i 時,您只是更改了迭代器的當前值,而不是序列本身。後續迭代繼續使用序列中的原始值,這就是您看到意外輸出的原因。
補救措施
修改迭代以實現所需的行為變數會影響後續迭代,您可以使用 while 循環代替。 While 迴圈可讓您在迴圈本身內手動遞增或修改迭代變數:
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
此程式碼將產生預期的輸出:
0 1 2 3 4 8 9
以上是為什麼在 Python 中修改 For 迴圈的迭代變數不會影響後續迭代?的詳細內容。更多資訊請關注PHP中文網其他相關文章!