【发布时间】:2015-01-20 01:05:25
【问题描述】:
例如,可以在没有break(并且没有continue 或return)的情况下重写此代码吗?
import logging
for i, x in enumerate(x):
logging.info("Processing `x` n.%s...", i)
y = do_something(x)
if y == A:
logging.info("Doing something else...")
do_something_else(x)
elif y == B:
logging.info("Done.")
break
编辑:由于有些人批评在循环中使用 break 和 continue,我想知道 Python 是否允许在没有它们的情况下编写 for 循环。我会说 Python 不允许这样做(也许它会违反“一种方法”的规则)。
EDIT2:评论者让我注意到可以使用return,但这也不是解决方案。
【问题讨论】:
-
是的,但你为什么要这个?
-
您是否需要一种在不中断循环控制流的情况下重写代码的方法?我认为背后的原因将大大提高您获得答案的质量。
-
我已添加说明。
-
偶尔使用
break或continue并不是坏事。但是,如果您发现自己在每个循环中都编写它们,您可能需要重新评估您的设计。 -
埃琳娜,你的代码很好。忘掉那些“有些人”会试图给你穿上紧身衣的废话吧。你的问题似乎相当于“一个人可以在不打破循环的情况下打破一个循环”。如果默认的隐式行为是继续循环,则“否”。如果您实际上是在问“我可以在辅助迭代器中隐藏中断,那么“是”。
标签: python python-3.x foreach iteration