如何跳过循环中的迭代?
Posted
技术标签:
【中文标题】如何跳过循环中的迭代?【英文标题】:How to skip iterations in a loop? 【发布时间】:2009-02-14 19:48:04 【问题描述】:我有一个循环,但有可能在循环内引发异常。这当然会一起停止我的程序。为了防止我捕获异常并处理它们。但是即使发生异常,其余的迭代也会运行。在我的except:
子句中是否有关键字可以跳过当前迭代的其余部分?
【问题讨论】:
看不到接受的答案(使用continue
)如何捕获异常,但它被接受了。因此,这个问题非常非常令人困惑。
@S.Lott 我不需要关键字来捕获异常,我只是在谈论总代码的一般流程。
@The.Anti.9。什么?首先你说“我想捕捉异常”。现在你说“我不需要关键字来捕获异常”。你能以某种方式澄清这一点吗?
@S.Lott。我不需要用关键字来捕捉异常,只需要在代码中尝试一下,除了语句......
我改写了问题以使其更好地匹配接受的答案。
【参考方案1】:
您正在寻找continue
。
【讨论】:
【参考方案2】:for i in iterator:
try:
# Do something.
pass
except:
# Continue to next iteration.
continue
【讨论】:
【参考方案3】:继续示例:
number = 0
for number in range(10):
number = number + 1
if number == 5:
continue # continue here
print('Number is ' + str(number))
print('Out of loop')
输出:
Number is 1
Number is 2
Number is 3
Number is 4
Number is 6 # Note: 5 is skipped!!
Number is 7
Number is 8
Number is 9
Number is 10
Out of loop
【讨论】:
【参考方案4】:这样的?
for i in xrange( someBigNumber ):
try:
doSomethingThatMightFail()
except SomeException, e:
continue
doSomethingWhenNothingFailed()
【讨论】:
编辑为使用 continue 而不是 pass。【参考方案5】:我想你在找continue
【讨论】:
【参考方案6】:对于这个特定的用例,使用try..except..else
是最干净的解决方案,如果没有引发异常,将执行else
子句。
注意:else
子句必须跟在所有 except
子句之后
for i in iterator:
try:
# Do something.
except:
# Handle exception
else:
# Continue doing something
【讨论】:
以上是关于如何跳过循环中的迭代?的主要内容,如果未能解决你的问题,请参考以下文章