【问题标题】:How to skip iteration step inside a function in a for loop in python?如何在python的for循环中跳过函数内的迭代步骤?
【发布时间】:2014-02-18 13:33:10
【问题描述】:

功能:

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

循环:

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

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

【问题讨论】:

    标签: python loops iteration skip


    【解决方案1】:

    函数不知道它是否在循环内被调用,当然不能使用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 的值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-05
      • 1970-01-01
      • 2021-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-15
      相关资源
      最近更新 更多