簡體   English   中英

雖然for循環內的while循環未更改python 3.x中for循環的i的值

[英]While loop inside for loop is not changing value of i of for loop in python 3.x

這是我的代碼

A = [0,0,-1,0]
for i in range(len(A)):
    while (i<len(A)) and (A[i] >=0):
        print(i, A[i]) 
        i=i+1

當我在python 3.x中執行此代碼時,我的輸出是

Output

0 0
1 0
1 0
3 0

我的問題是:由於A[2] < 0當while循環第一次退出時, i值變為2

但是之后,當它轉到父循環時,為什么i值再次變為1

因為在輸出的第三行之后,它再次打印1 0

Python for循環與C for循環不同。 迭代值在每個循環上替換 ,並丟棄循環內所做的任何更改。 無論您在for循環內對i做什么,當for循環循環時,您都從迭代器中提取下一個值,因此i將始終一次遍歷一個range所有值。

'for'語句無法像在C語言中那樣工作。每次迭代都會重新分配i變量。

您可以將“ for i in x”想像為:x具有更多值時,將i設置為x中的下一個值。

該問題在while循環退出后發生。 i設置為range(len(A))的下一個值,對於for循環的下一次迭代,該值為1。

您可以通過初始化i並刪除for循環來解決此問題

A = [0,0,-1,0]
i=0
while (i<len(A)) and (A[i] >=0):
   print(i, A[i]) 
   i=i+1

或使用break命令

A = [0,0,-1,0]
for i in range(len(A)):
    if(A[i]<0):
        break
    print(i, A[i])

嘗試在任何Python調試器中運行代碼,您將立即看到它們。 該代碼正常工作。 如果您需要特定的結果,請詢問,我會為您提供幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM