반복 실행문은 특정 처리를 원하는 횟수만큼 반복하기 위한 제어 처리 중 하나이며 Python에서는 for문과 while문을 사용할 수 있습니다. for문은 0개 이상의 데이터를 하나씩 연속적으로 작업을 수행합니다만 while문은 지정 조건을 만족할 때까지만 처리를 반복합니다. 이 글에서는 for문에 대한 내용을 정리해 소개합니다. 그리고 제어 처리에 대한 설명은 Python 순차,조건 분기,반복 처리의 프로그램의 제어 구조 이해하기 글을 참조하십시오.
참고로 소스 샘플은 [Google Colab에서 Python 코드 실행하기] 글에서 언급한 환경을 이용하면 Python 프로그램을 PC에 설치하지 않더라도 Chrome, IE, Edge의 Browser에서 쉽게 Python프로그램을 실행하고 따라할 수 있습니다.
기본 for문 반복 실행
for문은 실행 시 <변수>에 <반복 가능 객체 오브젝트> 요소를 하나씩 할당합니다 그리고 <변수>를 사용하여 처리하는 블록을 <반복 가능 객체 오브젝트> 요소가 다 할 때까지 반복합니다. 기본 문법은 다음과 같습니다
for <변수> in <반복 가능 객체 오브젝트>:
<변수>를 사용하여 처리하는 블록
C계통의 언어 for문과는 달리, Python의 for문은 반복 가능 객체 오브젝트를 반복적으로 처리하기 위한 것이므로 주의하는 것이 좋습니다.
<반복 가능 객체 오브젝트>는 그것이 포함하고 있는 요소를 반복적으로 꺼낼 수 있는 오브젝트를 의미합니다. 대표적인 예로는 리스트나 튜플, 집합, 사전 등이 있습니다. 또는 반복 가능 오브젝트 대신에 이터레이터(Iterator)와 같은 반복적으로 값을 반환할 수 있는 오브젝트를 사용할 수도 있습니다. (enumerate 함수와 zip 함수는 이터레이터를 반환합니다.)
다음은 지정한 횟수(4)만큼 숫자를 반복하여 출력하는 소스입니다.
for count in range(4):
print (count)
실행 결과는 다음과 같습니다.
0
1
2
3
리스트 사용 for문 반복 실행
리스트는 여러 종류의 데이터를 한 곳에 저장한 데이터 구조입니다. 이러한 리스트는 for문과 상성이 좋습니다. 다음은 리스트를 출력하는 소스 샘플입니다.
array1 = [ 'var1' , 'var2' , 'var3' ]
for item in array1 : # 반복적으로 item변수에 할당
print (item) # 'var1','var2','var3'를 차례대로 출력
다음과 같이 소스 실행 결과 ‘var1’ , ‘var2’ , ‘var3’ 요소가 저장된 array1 리스트를 반복적으로 item변수에 할당하고 출력 되는것을 확인할 수 있습니다.
var1
var2
var3
enumerate함수 사용 for문 반복 실행
선언된 리스트의 값을 변화 없이 유지시키고 싶을 때 요소에 인덱스를 부여하는 enumerate함수를 사용합니다.
listObj = [ 'var1' , 'var2' , 'var3' ]
# enumerate() : 인덱스와 요소를 취급하는 함수
for index, item in enumerate (listObj) :
# '0 : var1', '1 : var2', '2 : var3'출력
print (index, ':' , item)
실행 결과는 다음과 같습니다.
0 : var1
1 : var2
2 : var3
range함수 사용 for문 반복 실행
지정된 횟수만큼 처리를 반복하는 함수 range를 이용해서 처리의 횟수를 지정할 수 있습니다.
range함수는 인수로 초기값 , 최종값 , 증가값을 받습니다. 경우에 따라 일부 인수는 생략할 수도 있습니다.
주의) range함수의 결과는 0부터 시작하는 0 ~ ( 최종값 – 1) 까지의 리스트 기본 요소에 대해서 초기값과 증가값을 적용한 요소를 대상으로 반환 합니다.
최종값만 지정 (생략된 초기값은 0, 증가값은 1)
디음은 최종값으로 ‘3’을 지정한 소스입니다. 0부터 시작하기 때문에 최종값 ‘3’ 까지의 범위는 0 ~ 2이므로 ‘3’은 범위 밖의 숫자가 되어 출력되지 않습니다. 생략된 초기값은 지정이 없을 시 디폴트값인 ‘0’이 되어 ‘0, 1, 2’ 순서로 출력합니다.
for count in range(3) :
print (count)
실행 결과는 다음과 같습니다.
0
1
2
초기값과 최종값을 지정 (초기값은 1, 최종값은 4)
다음은 초기값은 ‘1’, 최종값은 ‘4’를 지정한 소스입니다. ‘1, 2, 3’을 차례로 출력합니다. 0부터 시작하기 때문에 최종값 ‘4’ 까지의 범위는 0 ~ 3이므로 ‘4’는 범위 밖의 요소가 되어 출력되지 않습니다.
for count in range (1,4):
print (count)
실행 결과는 다음과 같습니다.
1
2
3
초기값과 최종값, 증가값을 지정
다음은 초기값은 ‘5’, 최종값은 ’11’, 증가값은 ‘2’를 지정한 소스입니다. ‘5, 7, 9’를 차례로 출력합니다. 0부터 시작하기 때문에 최종값 ’11’까지의 범위는 0 ~ 10이므로 ’11’은 범위 밖의 요소가 되어 출력되지 않습니다.
for count in range(5,11,2):
print (count)
실행 결과는 다음과 같습니다.
5
7
9
값을 음수로 지정
다음은 초기값은 ‘5’, 최종값은 ‘-5’, 증가값은 ‘-2’를 지정한 소스입니다. 초기값인 ‘5’부터 ‘-2’가 더해져 ‘3, 1, -1, -3’을 차례로 출력합니다. 0부터 시작하기 때문에 최종값 ‘-5’ 까지의 범위는 0, -1, -2 , -3, -4 이므로 ‘-5’는 범위 밖의 요소가 되어 출력되지 않습니다.
for count in range(5, -5, -2):
print(count)
실행 결과는 다음과 같습니다.
5
3
1
-1
-3
zip함수 사용 for문 반복 실행
리스트 오브젝트 listObj1와 listObj2를 정의하여 zip 오브젝트를 작성하는 예시입니다. 참고로 Python의 ord() 함수는 지정 문자를 Unicode 값으로 변환하는 함수입니다.
listObj1 = [ '가', '나', '다', 'd', 'e']
# listObje1의 요소를 Unicode값으로 변환 [44032, 45208, 45796, 100, 101]
listObj2 = [ord(i) for i in listObj1]
print(listObj1)
print(ListObj2)
print('------------------------------')
# 여러 반복 가능 객체를 정리 : zip함수
zipObj = zip(listObj1, listObj2)
#'가 : 44032','나 : 45208','다 : 45796','d : 100','e : 101'을 순차적으로 표시
for n, m in zipObj:
print(f'{n} : {m}')
실행 결과는 다음과 같습니다.
['가', '나', '다', 'd', 'e']
[44032, 45208, 45796, 100, 101]
------------------------------
가 : 44032
나 : 45208
다 : 45796
d : 100
e : 101
댓글