for문이다. 파이썬을 쓰는 한 어떤 프로그램이던 for문을 쓰게 될 것이다.
C언어와 자바의 그것과는 좀 다르다.
*먼저 C언어의 for 루프이다. i라는 인덱스를 0부터 9까지 총 10번 반복하는 문장이다. 이것이 표준문장이라 보면된다. 어느 설명에도 다 이렇게 써있다. 자바도 비슷하다. 초기화; 비교연산; 인덱스 증감식; 자바도 비슷하다.
for(int i = 0; i < 10; i++){
printf("%d\n",i);
}
파이썬을 보면 다르다.
for i in range(10):
print(i)
#출력값
0
1
2
3
4
5
6
7
8
9
for 요소값 in range(10)은 iterable 이다. iterable은 생소한 개념인데 쉽게말해 range 함수는 for문 안에서 0부터 9까지 10개의 정수를 차례로 리턴한다. for문은 한번의 루프가 돌 때 마다 하나씩 받아서 코드블록을 실행한다.
>>> list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
range함수를 리스트 함수에 넘겨주면 리스트를 생성한다. 리스트도 iterable 이라 for문에 사용가능하다.
>>> a = [0,1,2,3,4,5,6,7,8,9]
>>> for i in a:
print(a[i])
#결과값
0
1
2
3
4
5
6
7
8
9
>>> for i in a:
print(i)
#결과값
0
1
2
3
4
5
6
7
8
9
>>> a = list(range(10))
>>> for i in a:
print(a[i])
#결과값
0
1
2
3
4
5
6
7
8
9
iterable을 for문으로 다양하게 표현 가능하다.
문자열도 list도 사용가능하다.
>>> fruits = ['apple','orange','kiwi','melon','strawberry']
>>> for i in fruits:
print(i)
#결과값
apple
orange
kiwi
melon
strawberry
iterable에서 더이상 요소가 나오지 않으면(요소의 끝까지 수행하면) for문은 종료한다. while문하고 다른 부분은 for문은 어느정도 끝이 예상이 될 때 사용하고, while문은 동작이 유지되는 조건을 걸때 사용한다... 만 알고리즘을 짜는 것에 달려있다.
tp1 = [(1,2),(3,4)]
for (x,y) in tp1:
print(x, y)
#결과값
1 2
3 4
튜플도 사용할 수 있다. iterable 과 같이 사용할 수 있기 때문에 다양한 for 문의 사용법이 있으니 하나씩 배워가는 재미가 있다.
의외로 자바에도 비슷한 사용 방식이 있다. 궁금한 경우 자바에 관련되 포스트를 참고한다.
의외로 초반에 등장하는 iterable 에 관한 부분은 뒷부분에 가서 배우게 된다. 생각보다 어려운 개념이다. 궁금하면 아래의 링크를 읽어보는 것을 추천한다.
for i in range(1,50):
if i%5 == 0:
print()
continue
print("%3.d"%i,end=", ")
for문에도 continue문을 사용할 수 있다. while처럼 continue문을 만나면 for문의 처음으로 돌아간다. 예제에는 5의 배수를 제외했다.
for문은 range 함수를 많이 사용하므로 몇가지 사용법을 예시한다.
# range(시작점,끝점 하나 뒤, 증감)
for i in range(5):
print(i, end=" ")
print()
for i in range(1,6):
print(i, end=" ")
print()
for i in range(2,11,2):
print(i, end=" ")
print()
for i in range(5,0,-1):
print(i, end=" ")
print()
for i in range(9,0,-2):
print(i, end=" ")
# range(끝점 하나 뒤)
# range(시작점,끝점 하나 뒤)
# range(시작점,끝점 하나 뒤, 증감)
의 형식으로 사용가능하다.
while 과 for 문은 호환이 가능한 부분이 많다. 상황에 적절한 반복문을 사용하도록 한다.