[英]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.