반응형

python for-else 예시

1.

for i in range(10):
    print(i)

    if i == 5:
        print("find it!")
        break
else:
    print("Can't find")

output---

0
1
2
3
4
5
find it!

 

for i in range(10):
    print(i)

    if i == 11:
        print("find it!")
        break
else:
    print("Can't find")

output

0
1
2
3
4
5
6
7
8
9
Can't find

--------------------

 

이처럼 for-else문을 활용해서

for문에서 특정한 행동을 완료하여 break로 탈출을 했는지 안했는지 판별을 해줄 수 있다.

break를 하지 않는 다면 else에 적혀진 문장을 수행한다.

 

만약 for-else문을 사용하지 않는다면 예시의 두번째를 이렇게 써야한다.

breaked = False
for i in range(10):
    print(i)

    if i == 11:
        print("find it!")
        breaked = True
        break

if not(breaked):
    print("Can't find")

큰 차이는 없고, for else가 익숙하지 않아서 오히려 이 방법이 더 가독성이 좋을 수 있다.

 

 

2.

balls = [1,2,3,4]
weapons = [11,22,3,44]

for ball_idx , ball_val in enumerate(balls):
    print("ball :" , ball_val)
    for weapon_idx , weapon_val in enumerate(weapons):
        print("weapons : ", weapon_val)
        if ball_val == weapon_val:
            print("공과 무기가 충돌")
            break
    else:
        continue
    print("바깥 for 문 break")
    break

이처럼 이중포문에서 for else문을 활용하여

내부 for문에서 break가 일어난다면 바깥 for문도 break가 일어나게하여

이중포문을 모두 종료시킬 수 있다.

 

for-else를 모른다면 bool 변수와 if문을 활용해서 위의 예처럼 종료시킬 수도 있다.

balls = [1,2,3,4]
weapons = [11,22,3,44]

breaked = False
for ball_idx , ball_val in enumerate(balls):
    print("ball :" , ball_val)
    for weapon_idx , weapon_val in enumerate(weapons):
        print("weapons : ", weapon_val)
        if ball_val == weapon_val:
            print("공과 무기가 충돌")
            breaked = True
            break

    if (breaked):
        print("바깥 for 문 break")
        break

위와 아래를 비교했을 때 위가 좀더 깔끔하긴 하다.

알면 좋고, 몰라도 크게 차이는 없어보인다.

 

 

 

#for-else #파이썬

+ Recent posts