for row in b:
for drug in drug_input:
for brand in brand_names[drug]:
Run Code Online (Sandbox Code Playgroud)
从第三个循环如何退出当前循环并转到下一个值for row in b:?
Don*_*ner 30
这个使用布尔值来看看你是否已经完成:
done = False
for x in xs:
for y in ys:
if bad:
done = True
break
if done:
break
Run Code Online (Sandbox Code Playgroud)
continue如果没有使用中断,这将是.在else将被跳过,如果有一个突破,所以它会看到未来break.这种方法的好处是不必使用变量,但可能更难以阅读.
for x in xs:
for y in ys:
if bad:
break
else:
continue
break
Run Code Online (Sandbox Code Playgroud)
for row in b:
more_drugs = True
for drug in drug_input:
for brand in brand_names[drug]:
if something:
more_drugs = False
break
if not more_drugs:
break
Run Code Online (Sandbox Code Playgroud)
Python没有一次打破两个循环的控制结构,所以你需要像这样手动做一些事情.
异常处理胜过遍布IMO的各种变量
for row in b:
for drug in drug_input:
try:
for brand in brand_names[drug]:
if some_condition:
raise StopIteration
except StopIteration:
break
Run Code Online (Sandbox Code Playgroud)
我会考虑将两个内部循环放在函数中并使用从那里返回.可能会重新思考你在做什么以及如何提供更好的替代方案.
你能给出你当前的伪代码,输入和输出,所以我们可以尝试首先消除中断的需要吗?我们需要查看循环变量的使用位置或更好,处理的目标是什么.
我看到请求此功能的最新 PEP 是 3136(并被拒绝):http : //mail.python.org/pipermail/python-3000/2007-July/008663.html
我可以看到你想要做的最接近和最干净的事情是执行以下操作(并且由于即使类型名称也有范围,你可以在它需要的函数中声明 LocalBreak ):
class LocalBreak(Exception): pass
try:
for i in ...:
for h in ...:
for j in ...:
if should_break(j):
raise LocalBreak()
except LocalBreak:
pass
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
34593 次 |
| 最近记录: |