Python:退出嵌套的两个循环

36 投票
11 回答
50146 浏览
提问于 2025-04-16 01:59
  for row in b:
    for drug in drug_input:
      for brand in brand_names[drug]:

在第三个循环中,我该怎么退出当前的循环,然后继续处理for row in b:中的下一个值呢?

11 个回答

8

如果你在一个方法里用了三层循环,那你可能需要重新考虑一下你的设计。

  • 把你的方法拆分成更小、更简单的方法。
  • 使用列表推导式,以及像 allany 这样的函数,来避免写明显的循环。

这样做应该能解决你遇到的问题。

8
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

Python没有直接的方式可以同时跳出两个循环,所以你需要手动处理一下,像这样做。

43

这个例子使用了一个布尔值来判断你是否完成了:

done = False
for x in xs:
    for y in ys:
        if bad:
            done = True
            break

    if done:
        break

如果没有使用 break,这个代码会 继续 执行。如果使用了 break,那么 else 部分会被跳过,这样就会看到下一个 break。这种方法的好处是不用额外的变量,但对一些人来说可能会比较难懂。

for x in xs:
    for y in ys:
        if bad:
            break
    else:
        continue

    break

撰写回答