而在Python3.x中,for循环内部的循环并没有改变for循环i的值
这是我的密码而在Python3.x中,for循环内部的循环并没有改变for循环i的值,python,python-3.x,for-loop,while-loop,python-3.6,Python,Python 3.x,For Loop,While Loop,Python 3.6,这是我的密码 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 我的问题是: 当while循环第一次退出时,i的值变为2,因为A[2]
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
我的问题是:
当while循环第一次退出时,i
的值变为2
,因为A[2]<0
但在这之后,当它转到循环的父级时,为什么i
的值再次变为1
因为在输出的第三行之后,它会再次打印
10
问题发生在while循环退出之后。i设置为范围(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
问题发生在while循环退出之后。i设置为
范围(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
Python
for
循环与Cfor
循环不同;迭代值在每个循环上被替换,放弃在循环内所做的任何更改。无论您对for
循环中的i
做什么,当for
循环时,您从迭代器中提取下一个值,因此i
将始终通过范围中的所有值,一次一个。Pythonfor
循环与Cfor
循环不同;迭代值在每个循环上被替换,放弃在循环内所做的任何更改。无论对for
循环中的i
执行什么操作,当for
循环时,从迭代器中提取下一个值,因此,i
总是一次一个地遍历范围中的所有值。for语句不像在C中那样工作。每次迭代都会重新分配i变量
您可以将“for i in x”想象成更像:当x有更多值时,将i设置为x中的下一个值。for语句不像在C中那样工作。每次迭代都会重新分配i变量
您可以将“x中的i”想象为:当x有更多值时,将i设置为x中的下一个值。尝试在任何Python调试器中运行代码,您将立即看到它。
代码工作正常。
如果您需要特定的结果,请询问,我会帮助您。尝试在任何Python调试器中运行代码,您将立即看到所有结果。
代码工作正常。
如果您需要特定的结果,请询问,我会帮助您。注意:有一些方法可以解决这个问题(涉及将迭代器存储到循环外的变量,并手动将其推进,以便for
处理的迭代器本身会被修改,但是当您处于如此复杂的情况下,通常最好只使用while
模拟一个C风格的for
循环。注意:有一些方法可以解决这个问题(涉及将迭代器存储到循环外的变量,并手动将其推进,以便for
处理的迭代器本身会被修改,但当您处于如此复杂的情况下,通常最好只使用while
模拟C风格for
循环。
A = [0,0,-1,0]
for i in range(len(A)):
if(A[i]<0):
break
print(i, A[i])