본문 바로가기

프로그래밍/Python

파이썬 강좌 13 :: 반복문 - for -


13. 반복문 :: for




for문은 while문처럼 특정 명령문을 반복수행하기 위한 제어문중 하나입니다. for문은 특히 배열 형식의 데이터를 순차적으로 접근하는 용도로 자주쓰이는 강력한 문법입니다.


# studyfor01.py


L = [1,2,3,4,5]


for a in L :

    print(a)



§ for문의 형식


for문은 명령문을 n회 반복실행한다는 느낌보다는 객체를 순회한다는 느낌이 강합니다. for문의 형식에서도 순회될 수 있는 객체(IterableObject)를 요구합니다.


for var in IterableObject:

indented-statements


for문은 순회가 가능한 객체와 그 객체를 순회하는 변수로 작동합니다. 변수에는 이름을 부여할 수 있으며 전부 순회할 때까지 for문을 반복하게 됩니다.


이해를 돕기위해 위 예제 스크립트 studyfor01.py의 for문 작동을 그림으로 표현해보았습니다.


studyfor01.py 에서 사용된 for문은 다음과 같이 객체의 원소들을 순회하면서 반복적으로 일어납니다. a는 반복마다 1 ~ 5의 값을 가르키게 됩니다.



 

§ iterable 자료형


for문을 통해 순회할 수 있는 자료형을 iterable 자료형이라고 부릅니다. 다음은 대표적으로 사용되는 iterable 자료형입니다.


[frequently used iterable class]

ㆍlist

str

range

tuple

dict

set


이 외에도 iterable 객체는 많으며 프로그래머가 직접 만들어 낼 수도 있습니다. iterable 자료형은 전부 for문을 이용하여 순회할 수 있습니다.


>>> str = "hello"

>>> for i in str :

...    print(i)

...

h

e

l

l

o

>>>




§ 반복을 위한 range자료형


range는 for문에서 순회 객체로 자주 사용되는 숫자의 범위를 표현하는 객체입니다.  range객체는 3가지 방식으로 생성할 수 있습니다.


1. range(n)

: 0 ~ n-1의 범위

2. range(a,b)

: a ~ b-1의 범위

3. range(a,b,t)

: a ~ b-1의 범위를 t간격으로


range 자료형을 list로 형변환하게 되면 내부의 구조를 한 눈에 볼 수 있습니다.


>>> list(range(5))

[0, 1, 2, 3, 4]

>>> list(range(1,5))

[1, 2, 3, 4]

>>> list(range(1,10,2))

[1, 3, 5, 7, 9]







§ for문은 어떨 때 사용할까?


for문은 리스트와 같은 객체의 원소들에 순서대로 접근하여 어떠한 특정 일을 수행하고 싶을 때 사용합니다. 많은 경우가 있지만 대표적인 예로 리스트의 모든 원소의 값을 2배로 하는 경우가 있습니다.


# studyfor02.py


L = [1,2,3,4,5]


for i in range(len(L)):

    L[i] = 2*L[i]


range함수와 len함수를 통해 적절한 객체를 만들고 리스트 L의 원소에 접근해서 각각의 원소들의 값에 2배를 한 값을 저장하고 있습니다.



§ 중첩된 for문의 작동과정


if나 while과 마찬가지로 for문 내부에 몇번이고 또다른 for문을 사용할 수 있습니다. 구구단 출력이 대표적인 for문 중첩의 예입니다.


# studyfor03.py


for i in range(1,10):

    for j in range(1,10):

        print(i,'*',j,'=',i*j)


실행시켜보면 1단부터 9단까지 출력되는 것을 볼 수 있습니다. 프로그램의 실행 흐름을 따라가보면 어떠한 원리인지 쉽게 눈치챌 수 있습니다.