【问题标题】:How to exit from 2 loops and continue the first loop when the inner loop meet a specific condition? [duplicate]当内循环满足特定条件时,如何退出2个循环并继续第一个循环? [复制]
【发布时间】:2020-01-02 02:03:03
【问题描述】:

我有 3 个循环。我想当最内层循环满足特定条件时,退出2个内层循环并继续外层循环。

for i in range(0,3):
    for j in range(0,4):
        for k in range(0,5):
            if k == 3:
                break
            print(i,j,k)

My output is :
0 0 0
0 0 1
0 0 2
0 1 0
0 1 1
0 1 2
1 0 0
1 0 1
1 0 2
1 1 0
1 1 1
1 1 2
but I would like to get to:
0 0 0
0 0 1
0 0 2
1 0 0
1 0 1
1 0 2

【问题讨论】:

  • 只需改写for 范围就足以生成请求的输出,而无需使用break
  • 这是一个简单的例子。我的原始代码很大

标签: python


【解决方案1】:

我会添加一个布尔值以退出第二个:

for i in range(0,2):  # change the end of range in order to have the wanted print.
    exit_second_loop = False
    for j in range(0,4):
        if exit_second_loop:
            break
        for k in range(0,5):
            if k == 3:
                exit_second_loop = True
                break
            print(i,j,k)

打印出来:

0 0 0
0 0 1
0 0 2
1 0 0
1 0 1
1 0 2

编辑

更优雅的解决方案:

j = 0
for i in range(0, 2):
    for k in range(0, 3):
        print(i, j, k)

另一个使用product的解决方案:

from itertools import product
j = 0
[print(i, j, k) for i, k in product(range(0, 2), range(0, 3))]

【讨论】:

  • 我想知道您的答案的反对意见(未记录的反对票)是什么:您确实已经生成了请求的输出。
猜你喜欢
  • 2017-02-03
  • 2016-03-18
  • 1970-01-01
  • 2023-01-12
  • 1970-01-01
  • 2022-01-13
  • 2014-07-21
  • 2012-09-16
  • 2020-11-29
相关资源
最近更新 更多