首頁 > 後端開發 > Python教學 > 為什麼在 Python 中修改 For 迴圈的迭代變數不會影響後續迭代?

為什麼在 Python 中修改 For 迴圈的迭代變數不會影響後續迭代?

Linda Hamilton
發布: 2024-11-25 05:55:12
原創
548 人瀏覽過

Why Doesn't Modifying a For Loop's Iteration Variable Affect Subsequent Iterations in Python?

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板