Hướng dẫn how do you exit multiple loops in python? - làm cách nào để thoát nhiều vòng lặp trong python?

Bằng cách sử dụng một chức năng:

Show
def myloop():
    for i in range(1,6,1):  # 1st loop
        print('i:',i)
        for j in range(1,11,2):  # 2nd loop
            print('   i, j:' ,i, j)
            for k in range(1,21,4):  # 3rd loop
                print('      i,j,k:', i,j,k)
                if i%3==0 and j%3==0 and k%3==0:
                    return  # getting out of all loops

myloop()

Hãy thử chạy các mã trên bằng cách nhận xét

done = False
for i in range(1,6,1):  # 1st loop
    print('i:', i)
    for j in range(1,11,2):  # 2nd loop
        print('   i, j:' ,i, j)
        for k in range(1,21,4):  # 3rd loop
            print('      i,j,k:', i,j,k)
            if i%3==0 and j%3==0 and k%3==0:
                done = True
                break  # breaking from 3rd loop
        if done: break # breaking from 2nd loop
    if done: break     # breaking from 1st loop
6 là tốt.

Mà không cần sử dụng bất kỳ chức năng nào:

done = False
for i in range(1,6,1):  # 1st loop
    print('i:', i)
    for j in range(1,11,2):  # 2nd loop
        print('   i, j:' ,i, j)
        for k in range(1,21,4):  # 3rd loop
            print('      i,j,k:', i,j,k)
            if i%3==0 and j%3==0 and k%3==0:
                done = True
                break  # breaking from 3rd loop
        if done: break # breaking from 2nd loop
    if done: break     # breaking from 1st loop

Bây giờ, chạy các mã trên như là đầu tiên và sau đó thử chạy bằng cách nhận xét từng dòng chứa

done = False
for i in range(1,6,1):  # 1st loop
    print('i:', i)
    for j in range(1,11,2):  # 2nd loop
        print('   i, j:' ,i, j)
        for k in range(1,21,4):  # 3rd loop
            print('      i,j,k:', i,j,k)
            if i%3==0 and j%3==0 and k%3==0:
                done = True
                break  # breaking from 3rd loop
        if done: break # breaking from 2nd loop
    if done: break     # breaking from 1st loop
7 mỗi lần từ dưới cùng.

Không thanh lịch như nó phải

Ảnh của Johannes Plenio trên unplash

Chúng ta đều biết rằng Python là một ngôn ngữ lập trình thanh lịch. Nhưng mọi thứ đều có điểm yếu. Đôi khi Python không thanh lịch như nó phải như vậy.

Ví dụ, khi chúng ta cần thoát ra khỏi các vòng lặp lồng nhau như sau:

for a in list_a:
for b in list_b:
if condition(a,b)…

Bài viết này mô tả cách thoát ra khỏi các vòng lặp lồng nhau trong Python.

  • Cách viết các vòng lồng nhau trong Python
  • Thoát khỏi các vòng lặp lồng nhau với
    done = False
    for i in range(1,6,1):  # 1st loop
        print('i:', i)
        for j in range(1,11,2):  # 2nd loop
            print('   i, j:' ,i, j)
            for k in range(1,21,4):  # 3rd loop
                print('      i,j,k:', i,j,k)
                if i%3==0 and j%3==0 and k%3==0:
                    done = True
                    break  # breaking from 3rd loop
            if done: break # breaking from 2nd loop
        if done: break     # breaking from 1st loop
    
    8 và
    done = False
    for i in range(1,6,1):  # 1st loop
        print('i:', i)
        for j in range(1,11,2):  # 2nd loop
            print('   i, j:' ,i, j)
            for k in range(1,21,4):  # 3rd loop
                print('      i,j,k:', i,j,k)
                if i%3==0 and j%3==0 and k%3==0:
                    done = True
                    break  # breaking from 3rd loop
            if done: break # breaking from 2nd loop
        if done: break     # breaking from 1st loop
    
    9
  • Thoát ra khỏi các vòng lồng nhau với một biến cờ
  • Tránh các vòng lặp lồng với
    for a in list_a:
    for b in list_b:
    if condition(a,b)…
    0
  • So sánh tốc độ

Xem bài viết sau đây để biết cách sử dụng cơ bản của vòng lặp

for a in list_a:
for b in list_b:
if condition(a,b)…
1 trong Python.

  • cho vòng lặp trong Python (với phạm vi, liệt kê, zip, v.v.)

Cách viết các vòng lồng nhau trong Python

Thoát khỏi các vòng lặp lồng nhau với

done = False
for i in range(1,6,1):  # 1st loop
    print('i:', i)
    for j in range(1,11,2):  # 2nd loop
        print('   i, j:' ,i, j)
        for k in range(1,21,4):  # 3rd loop
            print('      i,j,k:', i,j,k)
            if i%3==0 and j%3==0 and k%3==0:
                done = True
                break  # breaking from 3rd loop
        if done: break # breaking from 2nd loop
    if done: break     # breaking from 1st loop
8 và
done = False
for i in range(1,6,1):  # 1st loop
    print('i:', i)
    for j in range(1,11,2):  # 2nd loop
        print('   i, j:' ,i, j)
        for k in range(1,21,4):  # 3rd loop
            print('      i,j,k:', i,j,k)
            if i%3==0 and j%3==0 and k%3==0:
                done = True
                break  # breaking from 3rd loop
        if done: break # breaking from 2nd loop
    if done: break     # breaking from 1st loop
9

l1 = [1, 2, 3]
l2 = [10, 20, 30]

for i in l1:
    for j in l2:
        print(i, j)
# 1 10
# 1 20
# 1 30
# 2 10
# 2 20
# 2 30
# 3 10
# 3 20
# 3 30

Thoát ra khỏi các vòng lồng nhau với một biến cờ

for i in l1:
    for j in l2:
        print(i, j)
        if i == 2 and j == 20 :
            print('BREAK')
            break
# 1 10
# 1 20
# 1 30
# 2 10
# 2 20
# BREAK
# 3 10
# 3 20
# 3 30

Thoát khỏi các vòng lặp lồng nhau với done = False for i in range(1,6,1): # 1st loop print('i:', i) for j in range(1,11,2): # 2nd loop print(' i, j:' ,i, j) for k in range(1,21,4): # 3rd loop print(' i,j,k:', i,j,k) if i%3==0 and j%3==0 and k%3==0: done = True break # breaking from 3rd loop if done: break # breaking from 2nd loop if done: break # breaking from 1st loop 8 và done = False for i in range(1,6,1): # 1st loop print('i:', i) for j in range(1,11,2): # 2nd loop print(' i, j:' ,i, j) for k in range(1,21,4): # 3rd loop print(' i,j,k:', i,j,k) if i%3==0 and j%3==0 and k%3==0: done = True break # breaking from 3rd loop if done: break # breaking from 2nd loop if done: break # breaking from 1st loop 9

Thoát ra khỏi các vòng lồng nhau với một biến cờ

  • cho vòng lặp trong Python (với phạm vi, liệt kê, zip, v.v.)

Trong Python, các vòng lặp lồng nhau (nhiều vòng) được viết như sau. Các khối được thể hiện bằng các phần trong Python, vì vậy chỉ cần thêm nhiều phần.

for i in l1:
    for j in l2:
        print(i, j)
        if i == 2 and j == 20:
            print('BREAK')
            break
    else:
        continue
    break
# 1 10
# 1 20
# 1 30
# 2 10
# 2 20
# BREAK

Khi

done = False
for i in range(1,6,1):  # 1st loop
    print('i:', i)
    for j in range(1,11,2):  # 2nd loop
        print('   i, j:' ,i, j)
        for k in range(1,21,4):  # 3rd loop
            print('      i,j,k:', i,j,k)
            if i%3==0 and j%3==0 and k%3==0:
                done = True
                break  # breaking from 3rd loop
        if done: break # breaking from 2nd loop
    if done: break     # breaking from 1st loop
7 được thực hiện trong vòng lặp bên trong, nó chỉ thoát ra khỏi vòng bên trong và vòng lặp bên ngoài tiếp tục.

for i in l1:
    print('Start outer loop')

    for j in l2:
        print('--', i, j)
        if i == 2 and j == 20:
            print('-- BREAK inner loop')
            break
    else:
        print('-- Finish inner loop without BREAK')
        continue

    print('BREAK outer loop')
    break
# Start outer loop
# -- 1 10
# -- 1 20
# -- 1 30
# -- Finish inner loop without BREAK
# Start outer loop
# -- 2 10
# -- 2 20
# -- BREAK inner loop
# BREAK outer loop

Trong vòng lặp

for a in list_a:
for b in list_b:
if condition(a,b)…
1 của Python, bạn có thể sử dụng
done = False
for i in range(1,6,1):  # 1st loop
    print('i:', i)
    for j in range(1,11,2):  # 2nd loop
        print('   i, j:' ,i, j)
        for k in range(1,21,4):  # 3rd loop
            print('      i,j,k:', i,j,k)
            if i%3==0 and j%3==0 and k%3==0:
                done = True
                break  # breaking from 3rd loop
        if done: break # breaking from 2nd loop
    if done: break     # breaking from 1st loop
8 và
done = False
for i in range(1,6,1):  # 1st loop
    print('i:', i)
    for j in range(1,11,2):  # 2nd loop
        print('   i, j:' ,i, j)
        for k in range(1,21,4):  # 3rd loop
            print('      i,j,k:', i,j,k)
            if i%3==0 and j%3==0 and k%3==0:
                done = True
                break  # breaking from 3rd loop
        if done: break # breaking from 2nd loop
    if done: break     # breaking from 1st loop
9 ngoài
done = False
for i in range(1,6,1):  # 1st loop
    print('i:', i)
    for j in range(1,11,2):  # 2nd loop
        print('   i, j:' ,i, j)
        for k in range(1,21,4):  # 3rd loop
            print('      i,j,k:', i,j,k)
            if i%3==0 and j%3==0 and k%3==0:
                done = True
                break  # breaking from 3rd loop
        if done: break # breaking from 2nd loop
    if done: break     # breaking from 1st loop
7.

Bạn có thể phá vỡ tất cả các vòng lặp với

done = False
for i in range(1,6,1):  # 1st loop
    print('i:', i)
    for j in range(1,11,2):  # 2nd loop
        print('   i, j:' ,i, j)
        for k in range(1,21,4):  # 3rd loop
            print('      i,j,k:', i,j,k)
            if i%3==0 and j%3==0 and k%3==0:
                done = True
                break  # breaking from 3rd loop
        if done: break # breaking from 2nd loop
    if done: break     # breaking from 1st loop
8 và
done = False
for i in range(1,6,1):  # 1st loop
    print('i:', i)
    for j in range(1,11,2):  # 2nd loop
        print('   i, j:' ,i, j)
        for k in range(1,21,4):  # 3rd loop
            print('      i,j,k:', i,j,k)
            if i%3==0 and j%3==0 and k%3==0:
                done = True
                break  # breaking from 3rd loop
        if done: break # breaking from 2nd loop
    if done: break     # breaking from 1st loop
9.

Mã với lời giải thích như sau.

Khi vòng lặp bên trong kết thúc bình thường mà không có

done = False
for i in range(1,6,1):  # 1st loop
    print('i:', i)
    for j in range(1,11,2):  # 2nd loop
        print('   i, j:' ,i, j)
        for k in range(1,21,4):  # 3rd loop
            print('      i,j,k:', i,j,k)
            if i%3==0 and j%3==0 and k%3==0:
                done = True
                break  # breaking from 3rd loop
        if done: break # breaking from 2nd loop
    if done: break     # breaking from 1st loop
7,
done = False
for i in range(1,6,1):  # 1st loop
    print('i:', i)
    for j in range(1,11,2):  # 2nd loop
        print('   i, j:' ,i, j)
        for k in range(1,21,4):  # 3rd loop
            print('      i,j,k:', i,j,k)
            if i%3==0 and j%3==0 and k%3==0:
                done = True
                break  # breaking from 3rd loop
        if done: break # breaking from 2nd loop
    if done: break     # breaking from 1st loop
9 trong mệnh đề
done = False
for i in range(1,6,1):  # 1st loop
    print('i:', i)
    for j in range(1,11,2):  # 2nd loop
        print('   i, j:' ,i, j)
        for k in range(1,21,4):  # 3rd loop
            print('      i,j,k:', i,j,k)
            if i%3==0 and j%3==0 and k%3==0:
                done = True
                break  # breaking from 3rd loop
        if done: break # breaking from 2nd loop
    if done: break     # breaking from 1st loop
8 được thực thi.
done = False
for i in range(1,6,1):  # 1st loop
    print('i:', i)
    for j in range(1,11,2):  # 2nd loop
        print('   i, j:' ,i, j)
        for k in range(1,21,4):  # 3rd loop
            print('      i,j,k:', i,j,k)
            if i%3==0 and j%3==0 and k%3==0:
                done = True
                break  # breaking from 3rd loop
        if done: break # breaking from 2nd loop
    if done: break     # breaking from 1st loop
9 này dành cho vòng lặp bên ngoài và bỏ qua
done = False
for i in range(1,6,1):  # 1st loop
    print('i:', i)
    for j in range(1,11,2):  # 2nd loop
        print('   i, j:' ,i, j)
        for k in range(1,21,4):  # 3rd loop
            print('      i,j,k:', i,j,k)
            if i%3==0 and j%3==0 and k%3==0:
                done = True
                break  # breaking from 3rd loop
        if done: break # breaking from 2nd loop
    if done: break     # breaking from 1st loop
7 ở vòng ngoài và tiếp tục đến chu kỳ tiếp theo.

l1 = [1, 2, 3]
l2 = [10, 20, 30]
l3 = [100, 200, 300]

for i in l1:
    for j in l2:
        for k in l3:
            print(i, j, k)
            if i == 2 and j == 20 and k == 200:
                print('BREAK')
                break
        else:
            continue
        break
    else:
        continue
    break
# 1 10 100
# 1 10 200
# 1 10 300
# 1 20 100
# 1 20 200
# 1 20 300
# 1 30 100
# 1 30 200
# 1 30 300
# 2 10 100
# 2 10 200
# 2 10 300
# 2 20 100
# 2 20 200
# BREAK

Thoát ra khỏi các vòng lồng nhau với một biến cờ

Tránh các vòng lặp lồng với

for a in list_a:
for b in list_b:
if condition(a,b)…
0

So sánh tốc độ

Xem bài viết sau đây để biết cách sử dụng cơ bản của vòng lặp

for a in list_a:
for b in list_b:
if condition(a,b)…
1 trong Python.

Double-loop:

l1 = [1, 2, 3]
l2 = [10, 20, 30]

flag = False
for i in l1:
    for j in l2:
        print(i, j)
        if i == 2 and j == 20:
            flag = True
            print('BREAK')
            break
    if flag:
        break
# 1 10
# 1 20
# 1 30
# 2 10
# 2 20
# BREAK

Triple-loop:

l1 = [1, 2, 3]
l2 = [10, 20, 30]
l3 = [100, 200, 300]

flag = False
for i in l1:
    for j in l2:
        for k in l3:
            print(i, j, k)
            if i == 2 and j == 20 and k == 200:
                flag = True
                print('BREAK')
                break
        if flag:
            break
    if flag:
        break
# 1 10 100
# 1 10 200
# 1 10 300
# 1 20 100
# 1 20 200
# 1 20 300
# 1 30 100
# 1 30 200
# 1 30 300
# 2 10 100
# 2 10 200
# 2 10 300
# 2 20 100
# 2 20 200
# BREAK

cho vòng lặp trong Python (với phạm vi, liệt kê, zip, v.v.)

  • Trong Python, các vòng lặp lồng nhau (nhiều vòng) được viết như sau. Các khối được thể hiện bằng các phần trong Python, vì vậy chỉ cần thêm nhiều phần.

Khi

done = False
for i in range(1,6,1):  # 1st loop
    print('i:', i)
    for j in range(1,11,2):  # 2nd loop
        print('   i, j:' ,i, j)
        for k in range(1,21,4):  # 3rd loop
            print('      i,j,k:', i,j,k)
            if i%3==0 and j%3==0 and k%3==0:
                done = True
                break  # breaking from 3rd loop
        if done: break # breaking from 2nd loop
    if done: break     # breaking from 1st loop
7 được thực hiện trong vòng lặp bên trong, nó chỉ thoát ra khỏi vòng bên trong và vòng lặp bên ngoài tiếp tục.

done = False
for i in range(1,6,1):  # 1st loop
    print('i:', i)
    for j in range(1,11,2):  # 2nd loop
        print('   i, j:' ,i, j)
        for k in range(1,21,4):  # 3rd loop
            print('      i,j,k:', i,j,k)
            if i%3==0 and j%3==0 and k%3==0:
                done = True
                break  # breaking from 3rd loop
        if done: break # breaking from 2nd loop
    if done: break     # breaking from 1st loop
0

Trong vòng lặp

for a in list_a:
for b in list_b:
if condition(a,b)…
1 của Python, bạn có thể sử dụng
done = False
for i in range(1,6,1):  # 1st loop
    print('i:', i)
    for j in range(1,11,2):  # 2nd loop
        print('   i, j:' ,i, j)
        for k in range(1,21,4):  # 3rd loop
            print('      i,j,k:', i,j,k)
            if i%3==0 and j%3==0 and k%3==0:
                done = True
                break  # breaking from 3rd loop
        if done: break # breaking from 2nd loop
    if done: break     # breaking from 1st loop
8 và
done = False
for i in range(1,6,1):  # 1st loop
    print('i:', i)
    for j in range(1,11,2):  # 2nd loop
        print('   i, j:' ,i, j)
        for k in range(1,21,4):  # 3rd loop
            print('      i,j,k:', i,j,k)
            if i%3==0 and j%3==0 and k%3==0:
                done = True
                break  # breaking from 3rd loop
        if done: break # breaking from 2nd loop
    if done: break     # breaking from 1st loop
9 ngoài
done = False
for i in range(1,6,1):  # 1st loop
    print('i:', i)
    for j in range(1,11,2):  # 2nd loop
        print('   i, j:' ,i, j)
        for k in range(1,21,4):  # 3rd loop
            print('      i,j,k:', i,j,k)
            if i%3==0 and j%3==0 and k%3==0:
                done = True
                break  # breaking from 3rd loop
        if done: break # breaking from 2nd loop
    if done: break     # breaking from 1st loop
7.

Bạn có thể phá vỡ tất cả các vòng lặp với

done = False
for i in range(1,6,1):  # 1st loop
    print('i:', i)
    for j in range(1,11,2):  # 2nd loop
        print('   i, j:' ,i, j)
        for k in range(1,21,4):  # 3rd loop
            print('      i,j,k:', i,j,k)
            if i%3==0 and j%3==0 and k%3==0:
                done = True
                break  # breaking from 3rd loop
        if done: break # breaking from 2nd loop
    if done: break     # breaking from 1st loop
8 và
done = False
for i in range(1,6,1):  # 1st loop
    print('i:', i)
    for j in range(1,11,2):  # 2nd loop
        print('   i, j:' ,i, j)
        for k in range(1,21,4):  # 3rd loop
            print('      i,j,k:', i,j,k)
            if i%3==0 and j%3==0 and k%3==0:
                done = True
                break  # breaking from 3rd loop
        if done: break # breaking from 2nd loop
    if done: break     # breaking from 1st loop
9.

Mã với lời giải thích như sau.

done = False
for i in range(1,6,1):  # 1st loop
    print('i:', i)
    for j in range(1,11,2):  # 2nd loop
        print('   i, j:' ,i, j)
        for k in range(1,21,4):  # 3rd loop
            print('      i,j,k:', i,j,k)
            if i%3==0 and j%3==0 and k%3==0:
                done = True
                break  # breaking from 3rd loop
        if done: break # breaking from 2nd loop
    if done: break     # breaking from 1st loop
2

Khi vòng lặp bên trong kết thúc bình thường mà không có done = False for i in range(1,6,1): # 1st loop print('i:', i) for j in range(1,11,2): # 2nd loop print(' i, j:' ,i, j) for k in range(1,21,4): # 3rd loop print(' i,j,k:', i,j,k) if i%3==0 and j%3==0 and k%3==0: done = True break # breaking from 3rd loop if done: break # breaking from 2nd loop if done: break # breaking from 1st loop 7, done = False for i in range(1,6,1): # 1st loop print('i:', i) for j in range(1,11,2): # 2nd loop print(' i, j:' ,i, j) for k in range(1,21,4): # 3rd loop print(' i,j,k:', i,j,k) if i%3==0 and j%3==0 and k%3==0: done = True break # breaking from 3rd loop if done: break # breaking from 2nd loop if done: break # breaking from 1st loop 9 trong mệnh đề done = False for i in range(1,6,1): # 1st loop print('i:', i) for j in range(1,11,2): # 2nd loop print(' i, j:' ,i, j) for k in range(1,21,4): # 3rd loop print(' i,j,k:', i,j,k) if i%3==0 and j%3==0 and k%3==0: done = True break # breaking from 3rd loop if done: break # breaking from 2nd loop if done: break # breaking from 1st loop 8 được thực thi. done = False for i in range(1,6,1): # 1st loop print('i:', i) for j in range(1,11,2): # 2nd loop print(' i, j:' ,i, j) for k in range(1,21,4): # 3rd loop print(' i,j,k:', i,j,k) if i%3==0 and j%3==0 and k%3==0: done = True break # breaking from 3rd loop if done: break # breaking from 2nd loop if done: break # breaking from 1st loop 9 này dành cho vòng lặp bên ngoài và bỏ qua done = False for i in range(1,6,1): # 1st loop print('i:', i) for j in range(1,11,2): # 2nd loop print(' i, j:' ,i, j) for k in range(1,21,4): # 3rd loop print(' i,j,k:', i,j,k) if i%3==0 and j%3==0 and k%3==0: done = True break # breaking from 3rd loop if done: break # breaking from 2nd loop if done: break # breaking from 1st loop 7 ở vòng ngoài và tiếp tục đến chu kỳ tiếp theo.

Khi vòng lặp bên trong kết thúc với

done = False
for i in range(1,6,1):  # 1st loop
    print('i:', i)
    for j in range(1,11,2):  # 2nd loop
        print('   i, j:' ,i, j)
        for k in range(1,21,4):  # 3rd loop
            print('      i,j,k:', i,j,k)
            if i%3==0 and j%3==0 and k%3==0:
                done = True
                break  # breaking from 3rd loop
        if done: break # breaking from 2nd loop
    if done: break     # breaking from 1st loop
7,
done = False
for i in range(1,6,1):  # 1st loop
    print('i:', i)
    for j in range(1,11,2):  # 2nd loop
        print('   i, j:' ,i, j)
        for k in range(1,21,4):  # 3rd loop
            print('      i,j,k:', i,j,k)
            if i%3==0 and j%3==0 and k%3==0:
                done = True
                break  # breaking from 3rd loop
        if done: break # breaking from 2nd loop
    if done: break     # breaking from 1st loop
9 trong mệnh đề
done = False
for i in range(1,6,1):  # 1st loop
    print('i:', i)
    for j in range(1,11,2):  # 2nd loop
        print('   i, j:' ,i, j)
        for k in range(1,21,4):  # 3rd loop
            print('      i,j,k:', i,j,k)
            if i%3==0 and j%3==0 and k%3==0:
                done = True
                break  # breaking from 3rd loop
        if done: break # breaking from 2nd loop
    if done: break     # breaking from 1st loop
8 không được thực thi. Trong trường hợp này,
done = False
for i in range(1,6,1):  # 1st loop
    print('i:', i)
    for j in range(1,11,2):  # 2nd loop
        print('   i, j:' ,i, j)
        for k in range(1,21,4):  # 3rd loop
            print('      i,j,k:', i,j,k)
            if i%3==0 and j%3==0 and k%3==0:
                done = True
                break  # breaking from 3rd loop
        if done: break # breaking from 2nd loop
    if done: break     # breaking from 1st loop
7 trong vòng lặp bên ngoài được thực thi.

Kết quả là, bất cứ khi nào vòng lặp bên trong kết thúc với

done = False
for i in range(1,6,1):  # 1st loop
    print('i:', i)
    for j in range(1,11,2):  # 2nd loop
        print('   i, j:' ,i, j)
        for k in range(1,21,4):  # 3rd loop
            print('      i,j,k:', i,j,k)
            if i%3==0 and j%3==0 and k%3==0:
                done = True
                break  # breaking from 3rd loop
        if done: break # breaking from 2nd loop
    if done: break     # breaking from 1st loop
7,
done = False
for i in range(1,6,1):  # 1st loop
    print('i:', i)
    for j in range(1,11,2):  # 2nd loop
        print('   i, j:' ,i, j)
        for k in range(1,21,4):  # 3rd loop
            print('      i,j,k:', i,j,k)
            if i%3==0 and j%3==0 and k%3==0:
                done = True
                break  # breaking from 3rd loop
        if done: break # breaking from 2nd loop
    if done: break     # breaking from 1st loop
7 ở vòng ngoài cũng được thực hiện.

done = False
for i in range(1,6,1):  # 1st loop
    print('i:', i)
    for j in range(1,11,2):  # 2nd loop
        print('   i, j:' ,i, j)
        for k in range(1,21,4):  # 3rd loop
            print('      i,j,k:', i,j,k)
            if i%3==0 and j%3==0 and k%3==0:
                done = True
                break  # breaking from 3rd loop
        if done: break # breaking from 2nd loop
    if done: break     # breaking from 1st loop
3

Ý tưởng là như nhau ngay cả khi số lượng vòng lặp tăng lên. Một ví dụ về một vòng ba là như sau.

Cách sử dụng trên

done = False
for i in range(1,6,1):  # 1st loop
    print('i:', i)
    for j in range(1,11,2):  # 2nd loop
        print('   i, j:' ,i, j)
        for k in range(1,21,4):  # 3rd loop
            print('      i,j,k:', i,j,k)
            if i%3==0 and j%3==0 and k%3==0:
                done = True
                break  # breaking from 3rd loop
        if done: break # breaking from 2nd loop
    if done: break     # breaking from 1st loop
8 và
done = False
for i in range(1,6,1):  # 1st loop
    print('i:', i)
    for j in range(1,11,2):  # 2nd loop
        print('   i, j:' ,i, j)
        for k in range(1,21,4):  # 3rd loop
            print('      i,j,k:', i,j,k)
            if i%3==0 and j%3==0 and k%3==0:
                done = True
                break  # breaking from 3rd loop
        if done: break # breaking from 2nd loop
    if done: break     # breaking from 1st loop
9 có thể khó hiểu đối với những người không quen thuộc với Python.

done = False
for i in range(1,6,1):  # 1st loop
    print('i:', i)
    for j in range(1,11,2):  # 2nd loop
        print('   i, j:' ,i, j)
        for k in range(1,21,4):  # 3rd loop
            print('      i,j,k:', i,j,k)
            if i%3==0 and j%3==0 and k%3==0:
                done = True
                break  # breaking from 3rd loop
        if done: break # breaking from 2nd loop
    if done: break     # breaking from 1st loop
4

So sánh tốc độ

Xem bài viết sau đây để biết cách sử dụng cơ bản của vòng lặp

for a in list_a:
for b in list_b:
if condition(a,b)…
1 trong Python.

  • cho vòng lặp trong Python (với phạm vi, liệt kê, zip, v.v.)

Trong Python, các vòng lặp lồng nhau (nhiều vòng) được viết như sau. Các khối được thể hiện bằng các phần trong Python, vì vậy chỉ cần thêm nhiều phần.

Khi

done = False
for i in range(1,6,1):  # 1st loop
    print('i:', i)
    for j in range(1,11,2):  # 2nd loop
        print('   i, j:' ,i, j)
        for k in range(1,21,4):  # 3rd loop
            print('      i,j,k:', i,j,k)
            if i%3==0 and j%3==0 and k%3==0:
                done = True
                break  # breaking from 3rd loop
        if done: break # breaking from 2nd loop
    if done: break     # breaking from 1st loop
7 được thực hiện trong vòng lặp bên trong, nó chỉ thoát ra khỏi vòng bên trong và vòng lặp bên ngoài tiếp tục.

done = False
for i in range(1,6,1):  # 1st loop
    print('i:', i)
    for j in range(1,11,2):  # 2nd loop
        print('   i, j:' ,i, j)
        for k in range(1,21,4):  # 3rd loop
            print('      i,j,k:', i,j,k)
            if i%3==0 and j%3==0 and k%3==0:
                done = True
                break  # breaking from 3rd loop
        if done: break # breaking from 2nd loop
    if done: break     # breaking from 1st loop
5

Sử dụng

done = False
for i in range(1,6,1):  # 1st loop
    print('i:', i)
    for j in range(1,11,2):  # 2nd loop
        print('   i, j:' ,i, j)
        for k in range(1,21,4):  # 3rd loop
            print('      i,j,k:', i,j,k)
            if i%3==0 and j%3==0 and k%3==0:
                done = True
                break  # breaking from 3rd loop
        if done: break # breaking from 2nd loop
    if done: break     # breaking from 1st loop
8,
done = False
for i in range(1,6,1):  # 1st loop
    print('i:', i)
    for j in range(1,11,2):  # 2nd loop
        print('   i, j:' ,i, j)
        for k in range(1,21,4):  # 3rd loop
            print('      i,j,k:', i,j,k)
            if i%3==0 and j%3==0 and k%3==0:
                done = True
                break  # breaking from 3rd loop
        if done: break # breaking from 2nd loop
    if done: break     # breaking from 1st loop
9 và thêm các biến cờ gần tương đương và
for a in list_a:
for b in list_b:
if condition(a,b)…
0 chậm.

Tuy nhiên, trong một số trường hợp,

for a in list_a:
for b in list_b:
if condition(a,b)…
0 phù hợp hơn vì nó cải thiện khả năng đọc của mã ngay cả khi nó chậm. Bạn nên sử dụng nó tùy thuộc vào tình huống.

Làm thế nào để bạn thoát ra khỏi nhiều vòng cùng một lúc?

Thoát khỏi hai vòng..
Đặt các vòng vào một hàm và trở lại từ hàm để phá vỡ các vòng. ....
Nâng một ngoại lệ và bắt nó ra ngoài vòng đôi. ....
Sử dụng các biến Boolean để lưu ý rằng vòng lặp được thực hiện và kiểm tra biến trong vòng lặp bên ngoài để thực hiện ngắt thứ hai ..

Làm thế nào để tôi thoát ra khỏi tất cả các vòng lặp?

Đặt vòng lặp vào một chức năng và sử dụng Return để thoát ra khỏi tất cả các vòng lặp cùng một lúc. to break out of all the loops at once.

Làm thế nào để bạn thoát khỏi một vòng lặp trong Python?

Tuyên bố phá vỡ Python ngay lập tức chấm dứt hoàn toàn một vòng lặp.Thực hiện chương trình tiến hành tuyên bố đầu tiên sau cơ thể vòng lặp.Tuyên bố Python tiếp tục ngay lập tức chấm dứt lặp lại vòng lặp hiện tại.. Program execution proceeds to the first statement following the loop body. The Python continue statement immediately terminates the current loop iteration.

Break có thoát nhiều vòng không?

Sử dụng phá vỡ trong một vòng lặp lồng nhau trong một vòng lặp lồng nhau, một câu lệnh ngắt chỉ dừng vòng lặp nó được đặt vào. Do đó, nếu một lần ngắt được đặt trong vòng lặp bên trong, vòng lặp bên ngoài vẫn tiếp tục.Tuy nhiên, nếu ngắt được đặt ở vòng ngoài, tất cả các điểm dừng lại.In a nested loop, a break statement only stops the loop it is placed in. Therefore, if a break is placed in the inner loop, the outer loop still continues. However, if the break is placed in the outer loop, all of the looping stops.