파이썬 기초 문법이 궁금하신 분들은
제 벨로그의 파이썬 왕초보 시리즈를 추천 드립니다.
구글 코랩이나 주피터 노트북에서 직접 작성하며 풀어보세요.😊
for문은 요청한만큼 순서대로 반복한다.
따라서 while문처럼 영원히 반복할 가능성이 없기 때문에 더 안정적이다.
for 변수 이름 in 반복하고 싶은 것(리스트, 튜플, 딕셔너리, 문자열 등):
수행할 코드 1
수행할 코드 2
일반적으로 for문에서는 변수로 i를 사용한다.
for i in ['마라탕', '쌀국수', '타코']
위 코드는
"리스트 안에 있는 것을 순서대로 변수 i에 넣어라" 라는 뜻이다.
그러니까
가 되는 것이다.
for i in "Hello":
print(i)
H
e
l
l
o
H, e, l, l, o가 차례대로 변수 i에 들어갔다.
for i in {"이름" : "홍길동", "성별" : "남자", "나이" : 30}
print(i)
이름
성별
나이
딕셔너리는 무조건 key값이 기준이기 때문에 key값만 나온 것을 확인할 수 있다.
만약 0부터 9까지 반복하고 싶다면 어떻게 해야 할까?
for i in [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 를 해도 되지만
이 방법은 숫자가 많아질수록 번거롭다.
이때 사용하는 것이 range 함수다.
range 함수는 범위를 반복한다.
for i in range(10):
print(i)
0
1
2
3
4
5
6
7
8
9
range(10)은 0부터 10 전까지를 뜻한다.
시작점을 따로 지정할 수도 있다.
for i in range(3, 10):
print(i)
3
4
5
6
7
8
9
range(3, 10)은 3부터 10 전까지를 뜻한다.
일정한 간격으로 반복할 수도 있다.
for i in range(1, 10, 2):
print(i)
1
3
5
7
9
range(1, 10, 2)는 1부터 10 전까지 2씩 증가를 뜻한다.
증가 부분에 -1을 사용하면 거꾸로 작성된다.
for i in range(10, 0, -1):
print(i)
10
9
8
7
6
5
4
3
2
1
이중 for문은 말 그대로 for문 안에 for문이 있는 것이다.
삼중, 사중도 가능하다.
이중 for문을 이용해서 2단부터 시작하는 구구단을 만들어보자.
for i in range(2, 10):
for j in range(1, 10):
print('{} X {} = {}'.format(i, j, i*j))
for i in range(2, 10)
2부터 10 전까지 i에 넣어라
→ i는 2, 3, 4, 5, 6, 7, 8, 9
for j in range(1, 10)
1부터 10 전까지 j에 넣어라
→ j는 1, 2, 3, 4, 5, 6, 7, 8, 9
print('{} X {} = {}'.format(i, j, i*j))
중괄호가 세 개, format함수 안에 있는 값도 세 개다. 차례대로 넣어주면 된다.
→ i X j = 'i와 j를 곱한 값' 이 출력된다.
정석적인 방법은 아니다.
리스트 안에 for문을 써서 리스트 안에 바로 값들이 들어가게 하는 방법이다.
box = [i for i in range(1, 6)]
print(box)
[1, 2, 3, 4, 5]
for i in range(1, 6)
1부터 6 전까지 i에 넣어라
→ i는 1, 2, 3, 4, 5
[ i for i in range(1, 6)]
리스트 안을 i로 채우는데 그 i는 for문에서 만든 1, 2, 3, 4, 5다
아래 코드는 if문 까지 넣었다.
box = [i for i in range(1, 6) if i % 2 == 0]
print(box)
[2, 4]
해석 :
1부터 6전까지 i에 차례대로 넣고
만약 i를 2로 나눈 나머지가 0이라면 (= i가 짝수라면)
i 를 리스트 안에 넣어라
따라서 1, 2, 3, 4, 5 중에서 짝수만 들어간
[2, 4]가 출력이 됩니다.
box = ['박성혜', '리바이', '홍길동']
for name in box:
print(name)
박성혜
리바이
홍길동
위에서 보듯 변수 이름은 아무거나 지정해도 된다.
익숙해지려면 이 글을 그냥 보기만 해서는 안되고
반드시 직접 코드를 작성하고 돌려봐야 한다.
(복붙하면 안돼요)
다음 코드를 보자.
box = [[1, 2], [3, 4], [5, 6]]
for i in box:
print(i)
[1, 2]
[3, 4]
[5, 6]
순서대로 들어간 것을 알 수 있다.
여기서 변수를 두 개 만들어주면
box = [[1, 2], [3, 4], [5, 6]]
for i, j in box:
print(i)
1
3
5
for i, j in box:
print(j)
2
4
6
1이 i에, 2가 j에
3이 i에, 4가 j에
5가 i에, 6이 j에
순서대로 들어간 것을 확인할 수 있다.
연산도 할 수 있다.
box = [[1, 2], [3, 4], [5, 6]]
for i, j in box:
print(i + j)
3
7
1
이번에는 빈 리스트 안에 데이터를 넣는 for문을 만들어보자.
box = []
for i in range(1, 6):
box.append(i)
print(box)
[1, 2, 3, 4, 5]
i 는 1, 2, 3, 4, 5
리스트 안에 하나씩 들어간 것을 확인할 수 있다.
위 방법은 정석적인 방법인데,
위에서 배운 리스트 내포를 사용하면 한 줄로 만들 수 있다.
(위에서 배운 내용을 토대로, 밑의 코드를 보지 말고 직접 작성해본 후에 답을 보세요.)
box = [i for i in range(1, 6)]
print(box)
[1, 2, 3, 4, 5]
box = [i*3 for i in range(1, 11)]
print(box)
[3, 6, 9]
box = [5 for i in range(1, 6)]
print(box)
[5, 5, 5, 5, 5]
i의 개수만큼 5가 들어간 것을 확인할 수 있다.
box = [i*j for i in range(2, 10) for j in range(1, 10)]
i 는 2, 3, 4, 5, 6, 7, 8, 9
j 는 1, 2, 3, 4, 5, 6, 7, 8, 9
2단부터 시작한 구구단의 값이 다 들어가있는 걸 확인할 수 있다.
바로 전 글의 while문에서 풀었던 문제다.
while문은 이렇게 했다.
a = 0
b = 0
while a < 100:
a += 1
b += a
print(b)
5050
for문을 사용하면 훨씬 간단하다.
a = 0
for b in range (1, 101):
a += b
print(a)
여기까지 파이썬 for 반복문에 대한 설명이었습니다.
수정이 필요한 부분이나 이해가 안 가는 부분이 있다면 언제든 말씀해주세요!^0^
다음 글에서는 실습 문제를 풀어볼게요.
그럼 이만
총총