3 回答
TA贡献1816条经验 获得超4个赞
对于您的特定示例,这将起作用:
for i in range(1, 10):
if i in (5, 6):
continue
但是,使用while循环可能会更好:
i = 1
while i < 10:
if i == 5:
i = 7
# other code
i += 1
甲for环分配一个变量(在这种情况下i/在每次迭代开始时)到下一个元素列表中的迭代。这意味着无论您在循环内做什么,i都将成为下一个元素。该while循环有没有这样的限制。
TA贡献1817条经验 获得超14个赞
为什么问题循环无法按预期工作的更多背景知识。
一个循环
for i in iterable:
# some code with i
是基本的速记
iterator = iter(iterable)
while True:
try:
i = next(iterator)
except StopIteration:
break
# some code with i
因此,for循环从一个由迭代器构成的迭代器中提取值,并自动识别该迭代器何时用尽并停止。
正如你所看到的,在每次迭代while循环我被重新分配,因此值i将被覆盖,无论您在发出任何其他的重新分配的# some code with i一部分。
因此,forPython中的循环不适合对循环变量进行永久性更改,因此您应该采用while循环,正如Volatility的答案中已经证明的那样。
TA贡献1779条经验 获得超6个赞
这个概念在C语言世界中并不罕见,但应尽可能避免。但是,这就是我实施的方式,以一种我清楚知道正在发生的方式。然后,您可以在循环内的任何位置将要向前跳转的逻辑放在索引中,读者会知道要注意skip变量,而很容易错过将i = 7嵌入深处的情况:
skip = 0
for i in range(1,10):
if skip:
skip -= 1
continue
if i=5:
skip = 2
<other stuff>
添加回答
举报