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