2

次のことを達成するために、ネストされたforループをどのように壊すことができるかを理解しようとしています:

  1. ネストされた for ループを抜け出すとき、それはまだ外側の for ループの中にあります
  2. ネストされた for ループを分割すると、残りのコード (この場合は最後の行) は実行されません。
def for_loop_flow():
    for a in range(0, 2):
        print "a = %s" % a
        for b in range(3, 5):
            print "b = %s" % b
            if b == 4:
                print "XXXXXXXXbreak"
                break
        print("big piece of logic here, when nested for loop breaks, I "
              "don't wanna be here")

今のところ、フラグの使用しか考えられません。

def for_loop_flow():
    for a in range(0, 2):
        print "a = %s" % a
        flag = True
        for b in range(3, 5):
            print "b = %s" % b
            if b == 4:
                print "XXXXXXXXbreak"
                flag = False
                break
        if flag == True:
            print("big piece of logic here, when nested for loop breaks, I "
                  "don't wanna be here")

これを行うより良い方法はありますか?

4

1 に答える 1

8

a とflag変数forを含むループは、 with句breakとして表現できます。したがって、あなたの場合、フラグを取り除き、次を使用できます。forelse

for a in range(2):
    print "a = {:d}".format(a)
    for b in range(3, 5):
        print "b = {:d}".format(b)
        if b == 4:
            print "BREAK!"
            break
    else:
        print "Only run if no break in inner loop"

これは以下でも機能することに注意してくださいwhile

while check_if_still_true():
    do_work()
    if shall_we_break():
        break
else:
    we_exited_because_check_returned_false()
于 2013-05-26T02:19:59.313 に答える