Hướng dẫn go back to outer loop python - quay trở lại python vòng lặp bên ngoài

for i in ...:
    for j in ...:
        for k in ...:
            if something:
                # continue loop i

Trong trường hợp chung, khi bạn có nhiều cấp độ lặp và break không phù hợp với bạn (vì bạn muốn tiếp tục một trong các vòng lặp trên, không phải là một trong số các vòng trên), bạn có thể làm một trong những điều sau đây

Tái cấu trúc các vòng lặp bạn muốn thoát khỏi chức năng

def inner():
    for j in ...:
        for k in ...:
            if something:
                return


for i in ...:
    inner()

Nhược điểm là bạn có thể cần phải chuyển đến hàm mới đó một số biến, trước đây có phạm vi. Bạn có thể chỉ cần truyền chúng dưới dạng tham số, biến chúng thành các biến thể hiện trên một đối tượng (tạo một đối tượng mới chỉ cho hàm này, nếu nó có ý nghĩa) hoặc các biến toàn cầu, singletons, bất cứ điều gì (EHM, EHM).

Hoặc bạn có thể định nghĩa inner là một hàm lồng nhau và để nó chỉ nắm bắt những gì nó cần (có thể chậm hơn?)

for i in ...:
    def inner():
        for j in ...:
            for k in ...:
                if something:
                    return
    inner()

Sử dụng ngoại lệ

Về mặt triết học, đây là những gì ngoại lệ, phá vỡ dòng chảy của chương trình thông qua các khối xây dựng lập trình có cấu trúc (nếu, trong khi) khi cần thiết.

Ưu điểm là bạn không phải chia đoạn mã duy nhất thành nhiều phần. Điều này là tốt nếu đó là một loại tính toán mà bạn đang thiết kế trong khi viết nó bằng Python. Giới thiệu sự trừu tượng ở điểm ban đầu này có thể làm bạn chậm lại.

Điều tồi tệ với phương pháp này là các tác giả phiên dịch/trình biên dịch thường cho rằng các ngoại lệ là đặc biệt và tối ưu hóa cho họ phù hợp.

class ContinueI(Exception):
    pass


continue_i = ContinueI()

for i in ...:
    try:
        for j in ...:
            for k in ...:
                if something:
                    raise continue_i
    except ContinueI:
        continue

Tạo một lớp ngoại lệ đặc biệt cho việc này, để bạn không mạo hiểm vô tình làm im lặng một số ngoại lệ khác.

Một cái gì đó hoàn toàn khác

Tôi chắc chắn vẫn còn các giải pháp khác.

  • Tuyên bố tiếp tục Python được sử dụng để bỏ qua việc thực hiện lần lặp hiện tại của vòng lặp.
  • Chúng ta có thể sử dụng câu lệnh tiếp tục bên ngoài vòng lặp, nó sẽ gây ra lỗi khi cú pháp của nhóm: ‘Tiếp tục bên ngoài vòng lặp.SyntaxError: ‘continue’ outside loop“.
  • Chúng ta có thể sử dụng câu lệnh tiếp tục với & nbsp; cho loop & nbsp; và & nbsp; trong khi các vòng lặp.
  • Nếu câu lệnh tiếp tục có mặt trong vòng lặp a & nbsp;, nó chỉ bỏ qua việc thực hiện vòng lặp bên trong.nested loop, it skips the execution of the inner loop only.
  • Sự tiếp tục của người Viking là một từ khóa được bảo lưu trong Python.reserved keyword in Python.
  • Nói chung, câu lệnh tiếp tục được sử dụng với câu lệnh IF để xác định điều kiện bỏ qua việc thực hiện vòng lặp hiện tại.if statement to determine the condition to skip the current execution of the loop.

Sơ đồ dòng chảy của câu lệnh tiếp tục

Hướng dẫn go back to outer loop python - quay trở lại python vòng lặp bên ngoài
Python tiếp tục sơ đồ dòng chảy tuyên bố


Cú pháp câu lệnh tiếp tục là:

Chúng tôi có thể sử dụng bất kỳ tùy chọn, nhãn hoặc điều kiện nào với câu lệnh tiếp tục.


Python tiếp tục tuyên bố ví dụ

Hãy cùng xem xét một số ví dụ về việc sử dụng tuyên bố tiếp tục trong Python.

1. Tiếp tục với Loop

Hãy nói rằng chúng tôi có một chuỗi số nguyên. Chúng ta phải bỏ qua xử lý nếu giá trị là 3. Chúng ta có thể thực hiện kịch bản này bằng cách sử dụng cho câu lệnh LOOP và TIẾP TỤC.

t_ints = (1, 2, 3, 4, 5)

for i in t_ints:
    if i == 3:
        continue
    print(f'Processing integer {i}')

print("Done")

Output:

Hướng dẫn go back to outer loop python - quay trở lại python vòng lặp bên ngoài
Python tiếp tục tuyên bố với Loop


2. Tiếp tục tuyên bố với vòng lặp trong khi

Dưới đây là một ví dụ đơn giản về việc sử dụng câu lệnh tiếp tục với vòng lặp trong khi.

count = 10

while count > 0:
    if count % 3 == 0:
        count -= 1
        continue
    print(f'Processing Number {count}')
    count -= 1

Output:

Hướng dẫn go back to outer loop python - quay trở lại python vòng lặp bên ngoài
Python tiếp tục tuyên bố với vòng lặp trong khi


3. Tiếp tục tuyên bố với một vòng lặp lồng nhau

Hãy nói rằng chúng tôi có một danh sách các bộ dữ liệu để xử lý. Các tuple chứa số nguyên. Việc xử lý nên được bỏ qua cho các điều kiện dưới đây.

  • Bỏ qua việc xử lý tuple nếu kích thước của nó lớn hơn 2.
  • Bỏ qua thực thi nếu số nguyên là 3.

Chúng ta có thể thực hiện logic này với lồng nhau cho các vòng lặp. Chúng tôi sẽ phải sử dụng hai tuyên bố tiếp tục để thực hiện các điều kiện trên.

list_of_tuples = [(1, 2), (3, 4), (5, 6, 7)]

for t in list_of_tuples:
    # don't process tuple with more than 2 elements
    if len(t) > 2:
        continue
    for i in t:
        # don't process if the tuple element value is 3
        if i == 3:
            continue
        print(f'Processing {i}')

Output:

Hướng dẫn go back to outer loop python - quay trở lại python vòng lặp bên ngoài
Python tiếp tục tuyên bố với vòng lặp lồng nhau


Tại sao Python không hỗ trợ được dán nhãn Tuyên bố tiếp tục?

Nhiều ngôn ngữ lập trình phổ biến hỗ trợ một tuyên bố tiếp tục được dán nhãn. Nó chủ yếu được sử dụng để bỏ qua việc lặp lại của vòng ngoài trong trường hợp các vòng lặp lồng nhau. Tuy nhiên, Python không hỗ trợ được dán nhãn Tuyên bố tiếp tục.

PEP 3136 & NBSP; đã được nâng lên để thêm hỗ trợ nhãn để tiếp tục tuyên bố. Nhưng, nó đã bị từ chối bởi vì nó là một kịch bản rất hiếm và nó sẽ thêm sự phức tạp không cần thiết cho ngôn ngữ. Chúng ta luôn có thể viết điều kiện trong vòng lặp bên ngoài để bỏ qua thực thi hiện tại.


Python tiếp tục vs break vs pass

continuebreakđi qua
Tuyên bố tiếp tục chỉ bỏ qua lần lặp hiện tại của vòng lặp.Tuyên bố phá vỡ chấm dứt vòng lặp.Câu lệnh PASS được sử dụng để viết các khối mã trống.
Chúng ta có thể sử dụng câu lệnh tiếp tục chỉ trong một vòng lặp.Chúng ta chỉ có thể sử dụng câu lệnh break trong một vòng lặp.Chúng ta có thể sử dụng câu lệnh PASS bất cứ nơi nào trong mã Python.