我期待重新開始迭代,如果我收到異常。 (...它正在從服務器讀取數據,偶爾會得到間歇性的錯誤代碼,不會在重試時重複)。在Python中重新啓動for循環的迭代
with open(input, 'rb') as f:
r = unicodecsv.reader(f)
for row in r:
code to request some data from server
if response_code == 200:
code to process response
else:
want to restart the iteration for the current row
如果我使用的是while循環,這樣的事情顯然是明顯的(如不增加的數量),但考慮到我遍歷行中的for循環,想不到的一種強制重做當前迭代的方式。
雖然有很多發音相似的題目的帖子(如how to restart "for" loop in python ?,Python - Way to restart a for loop, similar to "continue" for while loops?,python: restarting a loop),每個我發現/讀的那些似乎得到的東西不同(例如只是如何重新啓動時到達終點,而不是如果發生某種情況,重新開始迭代)。
[Python 2.7版]
你不能倒帶的迭代for循環,因爲for循環遍歷的[迭代器] (https://docs.python.org/3/glossary.html#term-iterator)。迭代器只能前進到下一個位置。像你在你的問題中說的那樣使用while循環有什麼問題? – iCodez 2015-01-15 17:18:36
爲什麼有一段時間沒有選擇? – 2015-01-15 17:23:35
@iCodez和Padraic--已經看到用for循環(我認爲會出現這種情況)沒有辦法輕鬆做到這一點,最簡單的答案可能是切換到一段時間(...只是一點點更復雜/不像希望那樣整齊,但仍可能是最好的解決方案) – kyrenia 2015-01-15 17:27:02