如何跳过循环中的迭代?

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

【讨论】:

以上是关于如何跳过循环中的迭代?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用R中的下一个函数跳过for循环中的迭代[重复]

如何有条件地跳过python中for循环中的迭代步骤数?

如何跳过“foreach”循环的迭代?

VBA - 如何有条件地跳过for循环迭代

并行运行器跳过测试中的循环迭代

Python:如果条件为真,则跳过 For 循环中的迭代