프로그래밍을 하다보면 반복문만큼 유용한 게 없다. 파이썬에는 두 개의 반복문이 있다. for문과 while문이 그것이다. 반복문을 작성하다보면 약간은 곤란(?)한 상황들이 발생한다. 이럴 때 그의 맞는 함수를 알면 편리하게 작성할 수 있지만, 모르면 손이 고생하게 된다.


오늘은 파이썬 반복문(for, while) 완정정복하기 - 문법과 쓰임새 등에 대해서 알아보도록 하겠다.

 

 

파이썬 반복문

 

 

for문부터 하나씩 알아보도록 하자.

 

 

1. for문

1) for문을 돌릴 수 있는 대상은?

파이썬에는 하나 이상의 데이터 타입을 값으로 가질 수 있는 자료형이 있다. 튜플, 딕셔너리, 리스트, 셋트가 있다. 이 자료형들은 모두 for문을 이용해서 반복을 할 수가 있다. 가장 많이 사용하는 문법은 range함수를 이용해서 튜플 자료형을 만들고 이를 반복시키는 것이다.

 

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

 


파이썬은 모든 것은 어떤 클래스의 객체로 되어 있다. for문을 통해서 반복문을 실행할 수 있다는 것은 해당 객체에 __iter__함수가 구현되어 있는 것을 의미한다. __iter__함수는 내부에 __next__함수를 이용해서 다음 순서의 값을 가져오게 된다. 이를 확인하고 싶다면 iter함수를 호출여, iterator를 전달받은 후에 next함수를 호출하면 된다.

 

temp = [1, 2, 3, 4, 5]
 
temp_iter = iter(temp)
 
next(temp_iter)
next(temp_iter)
next(temp_iter)

[출력]
1
2
3

 

 

2) 2개 리스트를 동시에 for문 실행 - zip

리스트 2개를 동시에 for문으로 돌리고 싶다면 zip함수를 사용하면 된다. 예를 들어 2개의 리스트를 동일한 순서로 for문을 돌리고 싶다면 아래와 같이 작성하면 된다. list의 인덱스로 돌리는 방법도 있지만, zip함수를 이용하면 편리하다.

 

temp1 = [1, 2, 3, 4, 5]
temp2 = [1, 2, 3, 4, 5]
 
for a, b in zip(temp1, temp1):
    print(a*b)


[출력]
1
4
9
16
25

 

zip

 

 

3) for문을 돌리면서 순서값(인덱스)이 필요할 때 - enumerate

리스트나 딕셔너리 등에 for문을 적용하다 보면 인덱스 값이 필요할 때가 있다. 이 때는 enumerate함수를 이용하면 편리하다. 속도면에서도 enumerate함수를 이용하는 것이 좋다.

 

a = ['a', 'b', 'c', 'd']
for idx, i in enumerate(a):
    print(idx, i)
    
[결과]:
0 a
1 b
2 c
3 d

 

 

Recommendation 포스팅

 

 

enumerate함수를 이용하면 0부터 시작된다. 1부터 시작하고 싶다면, 1을 입력파라미터로 입력하면 된다.

 

# 인덱스와 함께 출력
for idx, i in enumerate(a, 1):
    print(idx, i)
    
[결과]
1 a
2 b
3 c
4 d

 

enumerate



4) 리스트(또는 딕셔너리, ndarray 등)에 if문과 for문 적용하기
리스트에 for문을 돌리면서 2를 곱한다고 하면 아래와 같이 한 줄에 작성할 수 있다.

 

temp = [1, 2, 3, 4, 5]
 
[i*2 for i in temp]

 


복잡하게 할 수 있는 코드를 간결하게 작성할 수 있어 굉장히 유용하다. if문도 같이 사용할 수 있고, 딕셔너리, numpy패키지의 ndarray에도 적용할 수 있다. 자세한 내용은 아래 포스팅을 참조해보자.
( 참조: 파이썬 컴프리헨션 문법, for문과 if문 한 줄로 리스트 코딩하기 )

 

2. while문

1) while문이란?
while문은 조건이 참인동안 실행하는 반복문이다. 흔히 무한루프에 빠질 수 있기 때문에 잘 사용하지 않는다고 알려져 있다. 코드에서 루프를 빠져나올 때는 break를 사용한다. 혹은 콘솔창에서 break를 입력하면 루프가 종료된다.

 

i = -1
 
while i<1000:
    i = int( input("i를 입력하세요.") )
 
    if i==1000:
        break

 

위와 같은 코드가 있다고 가정하면, 1000이상의 숫자를 입력하거나 1000을 입력해야 루프가 종료된다.


2) 언제 사용되는가?
while문의 쓰임새는 다양하겠지만, 주로 GUI프로그램의 입력을 받는 부분에서 사용된다. 사용자의 입력이 들어올 때까지 루프를 돌면서 체크하고, 값이 입력되면 그에 따른 처리를 해 준다. GUI프로그램의 사용예에 대해서도 다음에 한 번 다뤄보도록 하겠다.

 


오늘은 위와 같이 파이썬 반복문(for, while) 완정정복하기 - 문법과 쓰임새 등에 대해서 알아보았다. 반복문은 코딩을 할 때 굉장히 많이 사용하는 구문이다. 특히 for문을 자주 사용한다. 다른 언어와 달라 처음에 어색할 수 있지만, 몇 번 접하다보면 익숙해진다. 이번 기회에 잘 익혀두어서 유용하게 사용해보자.

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기