Python的初学者:完成工作后很快退出内部循环

时间:2014-10-21 22:14:37

标签: python

找到第一个list1 [k]> list2 [m,0] 我想增加list2 [m,1] 的值。主要的是,在第一个找到值和增加list2 [m,1]后,我不想继续内部for循环。我试图在最后使用休息,但它没有工作。任何建议?

 for k in range(0, rang+1):
    for m in range(0, len(dir)): # len(dir) is the row number of list2 
      if list1[k] > list2[m,0]:
        list2[m,1] += 1  

1 个答案:

答案 0 :(得分:2)

听起来你想要一个"multi-level break",一个可以同时突破两个或更多循环的语句。

有些语言有这样的东西,但Python没有。

但是,有一些事情你可以做,而不是从通常最好的解决方案到不做这件事。


将其重构为一个函数。当你从函数中return时,它会突破你所处的任何循环,一直到函数的边缘。


使用自定义例外。例如,class BreakException(Exception): pass。然后在外循环周围包裹try: / except BreakException: pass。然后只需要raise BreakException()来打破。当您raise出现异常时,它会突破您所处的任何循环,一直到except语句。


使用显式标记来跟踪您正在做的事情。将doublebreak = False置于内循环之前,将if doublebreak: break置于内循环之后,然后在内循环内执行doublebreak = True; break


谷歌针对某些字节码黑客添加了一种方法来对语言进行多级中断(使用一些略微难看的语法),并围绕它们构建一个导入钩子。 (或者也许使用MacroPy。)


谷歌为更加丑陋的黑客增加goto对Python的支持;您可以使用goto轻松模拟标记的中断,标记的中断通常可以替代多级中断。