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>
添加回答
舉報