找到第一个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
答案 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
。
谷歌为更加丑陋的黑客增加goto
对Python的支持;您可以使用goto
轻松模拟标记的中断,标记的中断通常可以替代多级中断。