파이썬의 for 반복문은 C/C++의 그것과는 약간 다르다. (JAVA나 C#의 foreach 명령과 유사한 점이 많다.) 기본 적인 문법은 다음과 같다.
for 변수 in 반복형:수행문 |
여기서 반복형은 열거형(sequence, range형, 문자열, 리스트, 튜플 등), 딕셔너리 등이 있다.
예로 기존의 리스트를 이용하여 리스트 요소들 중 짝수의 개수를 세는 프로그램을 작성해 보자.
>>> lst = [11, 44, 21, 55, 101]>>> cnt = 0>>> for n in lst :… if n%2==0:… cnt += 1>>> cnt1 |
이 예제는 리스트 lst 의 각 요소가 순서대로 n 변수에 대입되고 반복문이 수행된다.
range()함수와 range 형
for 구문과 자주 같이 사용되는 파이썬 내장 함수 중에서 range() 함수가 있는데 이 함수는 range 형을 만들어 준다. (range 형은 시퀀스 형에 속한다.) for 반복문과 조합되어서 자주 사용되므로 여기에서 자세히 설명하도록 하겠다. range() 함수는 세 가지 용법이 있다. 다음에서 m, n, s는 정수이다.
range(n) # 0 부터 n-1 까지의 요소를 가지는 range 형 반환range(m,n) # m 부터 n-1 까지의 요소를 가지는 range 형 반환range(m,n,s) # m 부터 n-1 까지의 요소(s는 step)를 가지는 range 형 반환 |
한 가지 주의할 점은 파이썬 3.x에서는 range()함수는 range 형을 반환한다. (반면 파이썬 2.x 에서는 리스트를 반환한다.) 따라서 파이썬 3.x에서는 이 rangeg형을 리스트로 만들기 위해서는 list()함수를 반드시 명시적으로 사용해야 한다.
>>> range(5)range(0,5)>>> list(range(5))[0,1,2,3,4]>>> list(range(1,11))[1,2,3,4,5,6,7,8,9,10]>>> list(range(0,30,5)) # 5가 증분[0,5,10,15,20,25]>>> list(range(0,-5,-1)) # -1이 증분[0,-1,-2,-3,-4]>>> list(range(0))[]>>> list(range(1,0))[] |
하지만 for문 안에서 range 함수를 사용할 경우 궂이 리스트로 바꿀 필요는 없다. 왜냐면 for 문에는 반복형(iterable)이 사용되며 range 객체는 열거형(sequence)이므로 반복형이기 때문이다.
예를 들어서 ‘hi.’라는 문자열을 다섯 번 출력하는 프로그램을 작성해 보자.
for _ in range(5):print(‘hi.’) |
이 반복문은 변수 _ 가 0,1,2,3,4 값을 가지고 각각 반복을 수행하게 된다. 실제 이 변수가 사용되지는 않으므로 그냥 _ 로 지정하였다. (파이썬에서 dummy variable 의 이름은 보통 _ 로 지정한다.)
구구단의 2단을 출력하는 프로그램을 작성해 보자.
>>> for n in range(2,10):
|
여기서 변수 n은 2부터 9까지의 값을 가지고 반복문이 수행된다. range(2,10)은 2부터 9까지의 숫자를 차례로 생성한다.
for 반복문은 중첩해서도 얼마든지 사용할 수 있다. 구구단의 2단부터 9단까지 한꺼번에 출력하려면 다음과 같이 작성하면 될 것이다.
>>> for m in range(2,10):
|
여기에서 print(‘-’*10)은 ‘----------’ 을 출력한다.
태옂ㄴ태연태연
답글삭제54587687442465
답글삭제ㅎ
답글삭제