관리 메뉴

me made it !

[Python] For else 구문이 뭐야? 본문

크래프톤 정글

[Python] For else 구문이 뭐야?

yeoney 2024. 7. 17. 09:34
반응형

0. 개요 

if ~ elif ~ else는 잘 안다고 자부할 수 있는 "나". 근데 for else 는 처음 들어보았다. 그래서 이렇게 for else에 관해 포스팅을 몇 자 적어본다. 

 

 

 

 

1. 서론


for i in range(1, len(arr)):
    if arr[i] > root:
        left_arr = arr[1:i]
        right_arr = arr[i:]
        break
    else:
        left_arr = arr[1:]

 

이진트리 문제를 푸는데 ... 자꾸 알 수 없는 시간초과가 떠서 뭔가 봤더니

for i in range(1, len(arr)):
    if arr[i] > root:
        left_arr = arr[1:i]
        right_arr = arr[i:]
        break
else:
    left_arr = arr[1:]

else: 구문을 자꾸 for 랑 한 줄에 쓰라는 거시다. 지금까지 생각하기로는 if ~ else: 일텐데 뭐지????????라는 생각이 들었다.

 

 

2. 본론


>>> for x in [1, 2, 3, 4]:
...     if x % 3:
...         print(x)  # x가 3의 배수가 아니면 출력
...     else:
...         break  # x가 3의 배수이면 반복문에서 빠져나감
... else:
...     print("리스트의 원소를 모두 출력했어요")
... 
1
2

이와 같은 for 문에서 리스트의 원소를 하나씩 출력하고 나서, else: 구문이 반복문 밖에 있다면, else: 구문이 실행되지 않는다. 다시말해서 for문과 같이 사용되는 else문은 for문이 break등으로 중간에 빠져나오지 않고 끝까지 실행 되었을 경우에 else문이 실행되는 방식으로 진행한다. 

>>> countdown = 5
>>> while countdown > 0:
...     print(countdown)
...     countdown -= 1
...     if input() == '중단':
...         break
... else:
...     print('발사!')
... 
5
4
3
중단

while 문도 마찬가지. while break될 경우에는 else블록이 실행되지 않는다. 

 

 

 

3. 결론


그렇다면 여기서 궁금한 것. 왜 쓸까?

=> for 문을 사용하다보면, 루프 중간에 break(브레이크) 문으로 빠져나오는 경우들이 있는데, 이게 break문이 걸려서 빠져나가는지 아닌지를 판단해야할 경우가 있다. 보통은 flag를 둬서 처리하는 것이 기존의 방식이지만 for else를 써서 break없이 빠져나온 경우를 처리할 수 있다. 

반응형