如何在python中的for循环中跳过函数内的迭代步骤?

时间:2014-02-18 13:33:11

标签: python loops iteration skip

功能:

def function_1(value):
    if value < 5:
        continue
    else:
        print "value: ", value

循环:

for value in xrange(10):
    function_1(value)

在上面的for循环中,如果value小于5,function_1将使for循环跳转到下一次迭代,否则它将打印该值。 如何在循环内部的函数的帮助下跳过迭代步骤?

1 个答案:

答案 0 :(得分:7)

函数不知道它是否在循环内被调用,当然不能使用continuebreak来影响该循环。

你必须在这里使用不同的沟通方式。使用异常或返回一个布尔值来指示它需要跳到下一次迭代的循环代码。

使用例外:

for value in xrange(10):
    try:
        function_1(value)
    except ExceptionRaisedByFunction1:
        # the frobnar failed to foozle the baz
        continue

会发出函数中的异常情况,表示当前值不合适,并且可以跳过其余的迭代,例如。

你也可以考虑使用生成器函数来代替过滤你的迭代:

def filter_function(iterable):
    for value in iterable:
         if value >= 5:
              print "value: ", value
              yield value

for value in filter_function(xrange(10)):
    # do something with value

此处生成器仅生成5或更高的值,因此for循环永远不需要使用continue,因为从未看到低于5的值。