포스트

중첩된 루프에서 탈출하기

Python에서 break 키워드를 사용한 일반적인 방법

Python에서 for 또는 while 루프를 사용할 때, 해당 루프를 중단하려면 break 키워드를 사용합니다. 이는 하나의 루프에서만 작동하므로, 여러 개의 중첩된 루프에서 완전히 탈출하려면 추가적인 방법이 필요합니다.

1
2
3
4
5
for i in range(5):
    for j in range(5):
        if j == 2:
            break
        print(f"i: {i}, j: {j}")

위 코드에서 안쪽 for 루프에서 break를 사용하면, j가 2가 되는 순간 그 루프는 종료되지만, 바깥쪽 for 루프는 계속 실행됩니다.

breakreturn을 이용한 함수 방식

여러 루프에서 한 번에 탈출하려면, 루프를 함수 안에 넣고 return 키워드를 사용하여 함수 자체에서 탈출할 수 있습니다.

1
2
3
4
5
6
7
8
def loop_escape():
    for i in range(5):
        for j in range(5):
            if j == 2:
                return
            print(f"i: {i}, j: {j}")

loop_escape()

이 경우, j가 2가 되는 순간 return이 실행되어 함수가 종료되고, 따라서 모든 루프에서 탈출하게 됩니다.

Exception을 이용한 방법

특별한 상황에서 여러 루프를 탈출할 필요가 있다면, 사용자 정의 예외를 발생시켜 처리할 수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
class LoopExit(Exception):
    pass

try:
    for i in range(5):
        for j in range(5):
            if j == 2:
                raise LoopExit
            print(f"i: {i}, j: {j}")
except LoopExit:
    pass

LoopExit라는 사용자 정의 예외를 만들고, 루프 내에서 이 예외를 발생시킵니다. 이 예외가 발생하면 try-except 블록에서 탈출하여 모든 루프에서 벗어납니다.

이 세 가지 방법은 각각의 장단점이 있으므로, 상황에 맞게 적절한 방법을 선택해야 합니다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.