C
Python/중급/Lesson 16

이터레이터 vs 이터러블

15분·theory
이 챕터
8/8

이터레이터 vs 이터러블

🎯 이 lesson 을 읽고 나면

이 lesson 을 다 읽고 나면 아래 3가지를 자신 있게 할 수 있습니다.

  • ✅ __iter__ · __next__ 구현으로 iterable 만들기
  • ✅ for 루프가 내부적으로 호출하는 메서드
  • ✅ itertools 의 기본 패턴

학습 목표를 체크리스트로 두고 다 답할 수 있게 되면 lesson 을 닫으세요.

이터러블 vs 이터레이터 — 코드 + 실행 결과

for 문이 동작하는 진짜 이유__iter____next__.


1. 이터러블 (iterable) = "for 가능한 객체"

python
# 이터러블: list, tuple, dict, set, str, range, file, generator
for x in [1, 2, 3]:        # list
    print(x)

for c in "abc":            # str
    print(c)

# 공통점: __iter__() 가 있음
lst = [1, 2, 3]
print(hasattr(lst, "__iter__"))    # True

2. 이터레이터 (iterator) = "next() 가능한 객체"

python
# iter() 로 이터러블 → 이터레이터
lst = [1, 2, 3]
it = iter(lst)             # 이터레이터 생성

print(next(it))            # 1
print(next(it))            # 2
print(next(it))            # 3
print(next(it))            # StopIteration 예외

3. for 문의 진짜 동작

python
# for x in lst: print(x) 는 사실 이렇게 동작:
it = iter(lst)
while True:
    try:
        x = next(it)
        print(x)
    except StopIteration:
        break

4. 직접 만들기

python
class 카운트:
    def __init__(self, end):
        self.end = end
        self.n = 0

    def __iter__(self):
        return self                # 자기 자신이 이터레이터

    def __next__(self):
        if self.n >= self.end:
            raise StopIteration
        self.n += 1
        return self.n

for x in 카운트(3):
    print(x)               # 1, 2, 3

5. iterable vs iterator 차이

iterableiterator
다시 사용OK (list 처럼)한 번만 (소진됨)
메서드__iter____iter__ + __next__
list, str, dictiter(lst), generator

한 줄 요약

iterable = for 가능 / iterator = next() 가능. 모든 generator 는 iterator. 모든 iterator 는 iterable.

🐍 실행해보기 — iterator — 직접 실행

위 개념을 실제로 코드로 실행해보세요. 값을 바꿔가며 어떻게 동작하는지 직접 확인하는 게 가장 빠른 학습.
✏️ Python 코드
📟 콘솔 출력
▶ 실행 버튼을 눌러보세요
🐍 Pyodide로 실제 Python 실행 — 첫 실행 시 로딩 3~5초 소요

🤖 AI 에게 이렇게 요청해보세요

이 lesson 의 개념을 알면 AI 에게 구체적으로 지시할 수 있습니다. 막연한 "고쳐줘" 가 아니라 어휘를 가진 요청 — 그게 토큰 절약의 출발점입니다.

  • "이 Python 코드에 이터레이터 vs 이터러블 개념 적용해줘"
  • "이 코드에 type hint + pytest 단위 테스트 추가해줘"
  • "이터레이터 vs 이터러블 관련 PEP 8 위반 점검해줘"

왜 이게 토큰을 줄이나

개념을 모를 땐 AI 답변을 받고도 "그게 뭐예요?" 를 다시 물어야 합니다. 그 "다시 물음" 이 토큰을 잡아먹습니다. 개념 한 번 익혀두면 대화가 한 번에 끝납니다.

먼저 읽으면 좋은 개념: try-except — Python 예외 처리
다음 추천: 클래스 기초
이터레이터 vs 이터러블 - Python