【问题标题】: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】:
函数不知道它是否在循环内被调用,当然不能使用continue 或break 来影响该循环。
您必须在此处使用不同的交流方式。使用异常或返回布尔值来指示循环代码需要跳到下一次迭代。
使用异常:
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 的值。