我想知道是否有任何内置方法可以继续进行python外循环中的下一次迭代。例如,考虑以下代码:
for ii in range(200):
for jj in range(200, 400):
...block0...
if something:
continue
...block1...
我希望此继续语句退出jj循环并转到ii循环中的下一项。我可以通过其他方式(通过设置标志变量)来实现此逻辑,但是有一种简单的方法可以做到这一点,还是像要求太多?
for i in ...:
for j in ...:
for k in ...:
if something:
# continue loop i
在一般情况下,当您有多个循环级别且break
对您不起作用时(因为您要继续上一个循环,而不是当前循环的右上循环),可以执行以下操作之一
def inner():
for j in ...:
for k in ...:
if something:
return
for i in ...:
inner()
缺点是您可能需要将以前在范围内的一些变量传递给该新函数。您既可以将它们作为参数传递,也可以在对象上使它们成为实例变量(如果有意义,则仅为此函数创建一个新对象),或者全局变量,单例(无论是什么)(ehm,ehm)。
或者,您可以将其定义inner
为嵌套函数,然后使其仅捕获所需的内容(可能会更慢?)
for i in ...:
def inner():
for j in ...:
for k in ...:
if something:
return
inner()
从哲学上讲,这就是例外,在必要时,通过结构化的编程构建块(如果是,为时,为时)中断程序流。
这样做的好处是您不必将单个代码分成多个部分。如果这是您在用Python编写代码时正在设计的某种计算,那么这很好。在早期引入抽象可能会使您减速。
这种方法的坏处在于,解释器/编译器作者通常会认为异常是例外情况,因此会相应地对其进行优化。
class ContinueI(Exception):
pass
continue_i = ContinueI()
for i in ...:
try:
for j in ...:
for k in ...:
if something:
raise continue_i
except ContinueI:
continue
为此创建一个特殊的异常类,这样您就不会冒意外使某些其他异常静默的风险。
我确信还有其他解决方案。
如下所示,我有3张表,即:表“Shops Fruits Data”,表(“Months”)和表(“Output”)。 我正在尝试将数据从“Shops Fruits data”表中复制到(“Output”)结构中,该数据基于从表中的月份(“months”)。我已经写了一段代码。然而,使用这段代码,我只能遍历第一行。我不明白,我怎样才能继续到下一排,直到最后一排。其次,我也不能将商店和水果的名称复制到
问题内容: 您如何在Python中说两个嵌套循环的父循环? 我知道您可以在大多数情况下避免这种情况,但是可以在Python中完成吗? 问题答案: 摆脱内循环(如果之后没有其他东西) 将外部循环的主体放入函数中并从函数返回 引发异常并在外部捕获它 设置一个标志,从内部循环中断开并在外部级别对其进行测试。 重构代码,因此您不再需要这样做。 我每次都会带着5。
java中是否存在跳过for循环其余部分的令牌?类似VB的东西在Java中继续。
如何进入JavaScript循环的下一次迭代? 例如: MDN文档只提到完全脱离循环,而不是转移到下一个迭代。
问题内容: Java中是否有一个令牌可以跳过其余的for循环?Java中类似VB的Continue。 问题答案: 关键字将在调用时开始下一次迭代 例如 这将打印 看到 文件