[Python][반복문] for - else

김영후·2023년 2월 19일
0

Python 회고록

목록 보기
5/5

반복문을 반복하는 방법 중 새로운 방법을 알게 되어 글을 쓰게 되었다. for - else라니 이런 좋은 방법이 있는지는 몰랐다. 그럼 for - else에 대해 알아보자.

for else

많은 분들께서 for문에서 원하는 것을 걸러내기 위해 break, flag를 같이 사용하고 있다고 생각한다. 나 역시 그런 방법으로 조건에 맞지 않는 것을 걸러내고 있기도 하다. 예시를 들어 보는 것이 가장 빠르게 이해될테니 예시를 들어보자.

sample = ["a", "b", "c", "D", "e"]
flag = True
for i in range(len(sample)):
    if sample[i].isupper():
        flag = False
        break

if flag:
    print("모두 소문자")
else:
    print("대문자 포함")
    
#result: 대문자 포함

조건에 안맞는 것을 거르는 방법 중 가장 먼저 떠오르고, 기본 적인 방법이라고 생각한다. 이를 for - else 문으로 대체하면 정말 더 간결해진다. 예시를 같이 보도록 하자.

sample = ["a", "b", "c", "d", "e"]
for i in range(len(sample)):
    if sample[i].isupper():
        break
else:
    print("모두 소문자")
print("대문자 포함")
    
#result: 모두 소문자\n대문자 포함

sample = ["a", "b", "c", "D", "e"]
for i in range(len(sample)):
    if sample[i].isupper():
        break
else:
    print("모두 소문자")
print("대문자 포함")

#result: 대문자 포함

for - else문에서 else의 진입을 보기 위해 무조건 출력되는 "대문자 포함", break가 걸리지 않았을 경우에 출력되는 "모두 소문자"의 경우를 살펴보자.
sample에 있는 모든 원소가 소문자인 첫번째 케이스는 break가 걸리지 않았기에 else로 진입해 "모두 소문자"를 출력해주었다. 두번째 케이스는 대문자가 포함돼있기 때문에 else문으로 진입하지 않고 for문을 빠져나와 "모두 소문자"를 출력하지 않는다.
이로써 for - else문에서 else로의 진입은 break에 걸리지 않고 모든 반복을 다 했을 때 이루어지는 것을 알 수 있다. 이를 잘 이용한다면 정말 편하게 조건을 따질 수 있을 것이다. 앞으로 for - else의 존재를 까먹지 말고 적절히 잘 사용해보도록 하자!

profile
PNU CSE 16th / Busan, South Korea

0개의 댓글