반복 — for와 range, 그리고 들여쓰기 ★★
for는 같은 일을 여러 번 되풀이하는 명령이에요. range(4)는 "0, 1, 2, 3"을 차례로 내주는 도구예요. 0부터 시작하고 끝 숫자(4)는 포함하지 않아요. 슬라이싱과 같은 규칙이에요.
| 바퀴 | i | total 계산 | 찍히는 결과 |
|---|---|---|---|
| 1 | 0 | 0 + 0 = 0 | 0 0 |
| 2 | 1 | 0 + 1 = 1 | 1 1 |
| 3 | 2 | 1 + 2 = 3 | 2 3 |
| 4 | 3 | 3 + 3 = 6 | 3 6 |
range(0, 10, 4)처럼 숫자 세 개를 쓰면 range(시작, 끝, 간격)이에요. 0에서 시작해 4씩 더하다가 10 이상이 되면 멈춰서 0, 4, 8이 나와요. 데이터 10개를 4개씩 묶어 꺼낼 때 이 모양을 쓰고, 그래서 묶음이 3개(4개, 4개, 2개)가 돼요.
반복할 범위는 들여쓰기로 정해요. 들여쓴 줄만 매 바퀴 반복되고, 들여쓰지 않은 줄은 반복이 다 끝난 뒤 한 번만 실행돼요.
리스트의 값을 하나씩 꺼내 쓰는 것도 같은 for예요. 값이 짝으로 묶여 있으면 for p, q in pairs:처럼 변수 두 개로 한꺼번에 받을 수 있어요. 나중에 나올 for batch_x, batch_y in loader:도 "꺼낸 묶음이 (입력, 정답) 짝이라서 둘로 나눠 받는다"는 같은 모양이에요.
range(n)은 0부터 n−1까지, 총 n번. "끝 숫자는 빠진다"만 기억하세요. 그리고 들여쓴 줄 = 반복 안이에요.
for 문제는 위 표처럼 바퀴마다 한 줄씩 표를 그려요. 바퀴 수는 range의 개수예요. print가 들여쓴 줄 안에 있으면 바퀴 수만큼, 바깥에 있으면 한 번만 찍혀요.
잠깐 확인 — range(2, 8, 3)이 내주는 숫자는?
2, 5예요. 2에서 시작해 3씩 더하면 2, 5, 8인데 8은 끝 숫자(8)와 같아서 포함되지 않아요.
자료: 2~4주차 · Week02/Week03 노트북(풀이포함) · 빅분02(2주차)·빅데이터03(3주차)·빅데이터04(4주차) 녹취