Menu

파이썬 for 반복문: 리스트, 문자열, range, 딕셔너리 순회

파이썬 for 반복문이 어떻게 동작하는지 — 리스트, 문자열, range, 딕셔너리, 그 외 이터러블 순회와 break · continue · else까지.

파이썬의 for는 "for each"예요

C 계열 언어를 써봤다면 파이썬의 for는 좀 달라 보일 거예요. for (i = 0; i < n; i++) 같은 카운터 패턴이 없어요. 파이썬의 for는 엄격하게 for each 반복문이에요. 컬렉션을 주면 아이템을 하나씩 건네줍니다.

main.py
Output
Click Run to see the output here.

이건 세 줄을 출력해요. 파이썬이 리스트를 읽고, 한 번에 한 원소를 꺼내서, 본문이 도는 동안 color라는 이름에 바인딩합니다. 남은 게 없으면 반복문이 끝나요.

모양을 보세요 — for <이름> in <이터러블>:에 이어 들여쓰기된 본문. 들여쓰기, 콜론, 본문 — if와 같은 구조예요.

무엇이 이터러블인가요

값들의 시퀀스를 담고 있는 거의 모든 것. 리스트, 튜플, 문자열, range, 딕셔너리, 집합, 파일, 그리고 여러분이 만들 대부분의 커스텀 객체까지.

main.py
Output
Click Run to see the output here.

균일함이 좋은 점이에요 — 문법 하나로 다양한 데이터 모양을 다룹니다.

range()로 카운터 쓰기

카운터가 필요할 때 — "이 일을 10번 해" 또는 "인덱스 0부터 9까지 돌아" — 에는 range()를 쓰세요:

main.py
Output
Click Run to see the output here.

이건 0, 1, 2, 3, 4를 출력해요. range(stop)은 0부터 stop 직전까지 셉니다. range(start, stop)은 시작값을 정할 수 있고, range(start, stop, step)은 단계 크기까지 제어할 수 있어요:

main.py
Output
Click Run to see the output here.

range는 조금 더 깊이 알아둘 만해서 따로 페이지가 준비돼 있어요. 지금은 range(n)이 0부터 n-1까지 n번 반복을 준다는 정도면 충분해요.

enumerate: 인덱스와 함께 반복하기

자주 생기는 요구: "인덱스랑 값을 같이 쓰고 싶어요." 초보자가 가장 먼저 떠올리는 건 range(len(...))인데, 파이썬에는 더 좋은 도구가 있어요:

main.py
Output
Click Run to see the output here.

enumerate()(인덱스, 값) 쌍을 내놓아요. for 뒤의 두 변수가 그 쌍을 두 이름 — indexcolor — 으로 _언패킹_해줍니다. 이쪽이 훨씬 깔끔해요:

main.py
Output
Click Run to see the output here.

0이 아니라 1부터 세고 싶다면 start=1을 넘기세요:

main.py
Output
Click Run to see the output here.

zip: 두 시퀀스를 함께 순회하기

길이가 같은 두 리스트를 짝지어 쓰고 싶을 때:

main.py
Output
Click Run to see the output here.

zip은 가장 짧은 시퀀스에서 멈춰요. 계속 돌면서 None으로 채우고 싶다면 itertools.zip_longest를 쓰세요.

딕셔너리 순회하기

딕셔너리는 뭘 반복할지 선택할 수 있게 해줍니다:

main.py
Output
Click Run to see the output here.

대부분의 경우 .items()가 정답이에요 — 키와 값을 한 줄로 같이 받을 수 있으니까요.

break와 continue

가끔은 조기에 빠져나오거나, 특정 반복을 건너뛰고 싶어요.

**break**는 반복문을 즉시 빠져나옵니다:

main.py
Output
Click Run to see the output here.

6을 넘는 숫자를 발견하는 순간 반복문이 멈춰요. 남은 아이템들은 무시됩니다.

**continue**는 현재 반복의 나머지를 건너뛰고 다음 반복으로 넘어갑니다:

main.py
Output
Click Run to see the output here.

둘 다 쓸 만하지만, continue가 여러 개 섞이면 반복문이 따라가기 어려워질 수 있어요. 종종 단순한 if/else가 더 잘 읽힙니다.

반복문의 else

파이썬에는 대부분의 언어에 없는 기능이 하나 있어요: 반복문에 붙는 else 절이에요. break에 걸리지 않고 반복이 끝났을 때 실행됩니다.

main.py
Output
Click Run to see the output here.

유용하지만 처음에는 헷갈려요. 꼭 써야 한다는 의무감은 갖지 마세요 — 반복문 바깥에 불리언 플래그를 하나 두는 쪽이 처음 보는 사람에게는 더 명확한 경우가 많아요.

순회 중에 리스트 변경하기

짚고 넘어갈 함정 하나: 순회 중인 리스트에 원소를 추가하거나 제거하지 마세요. 반복이 어떤 인덱스가 아직 유효한지 혼란스러워하다가 아이템을 놓치거나 에러가 터져요. 안전한 패턴은 새 리스트를 만드는 거예요:

main.py
Output
Click Run to see the output here.

익숙해지면 리스트 컴프리헨션이 같은 일을 한 줄로 해줍니다 — 컬렉션 챕터에서 다룹니다.

끝에서 끝까지 작은 예제

지금까지 배운 걸 묶어볼까요 — 리스트 읽고, 필터하고, enumerate하고, 출력하기:

main.py
Output
Click Run to see the output here.

다음: while 반복문

뭘 순회할지 이미 알고 있을 때는 for가 맞아요. 어떤 조건이 바뀔 때까지 반복해야 할 때는 while이 맞는 선택이에요 — 다음에 이어집니다.

자주 묻는 질문

파이썬의 for 반복문은 어떻게 동작하나요?

for item in sequence:은 시퀀스의 각 원소에 대해 들여쓰기된 본문을 한 번씩 실행해요. 매 반복마다 item이 다음 값을 받습니다. 시퀀스에는 리스트, 튜플, 문자열, 딕셔너리, range, 그리고 이터레이터를 정의한 어떤 객체든 포함돼요.

break와 continue는 뭐가 다른가요?

break는 반복문을 즉시 빠져나오고, 남은 반복들은 건너뜁니다. continue는 현재 반복의 나머지 부분을 건너뛰고 다음 반복으로 넘어가요. break는 "나 이제 끝", continue는 "이건 건너뛰자"예요.

파이썬에서 인덱스와 함께 반복하려면요?

시퀀스를 enumerate(...)로 감싸면 (인덱스, 값) 쌍을 얻을 수 있어요: for i, item in enumerate(items):. 반복문 맨 아래서 i += 1로 카운터를 직접 관리하는 것보다 훨씬 깔끔해요.

Coddy로 코딩 배우기

시작하기