본문 바로가기
IT/Python

[파이썬] 이터레이터 이터러블 차이 쉽게 이해하기

by 프론트엔드 지식백과 2025. 1. 11.

파이썬을 배우다보면 이터러블(Iterable)과 이터레이터(Iterator)라는 말이 헷갈릴 때가 많다.

오늘은 이 두 가지를 실생활 예시로 통해 쉽게 설명해보겠다.

 

이터러블(iterable): 준비된 데이터를 담고 있는 통

이터러블은 데이터를 하나씩 꺼낼 수 있는 리스트나 문자열 같은 통이라고 생각해보자.

예를 들어, 쇼핑카트 안에 사과, 바나나, 체리가 담겨 있다.

이 쇼핑카트는 여러 개의 물건을 담고 있고, 꺼내서 확인할 수 있으니 이터러블이다.

shopping_cart = ["사과", "바나나", "체리"]  # 이터러블

 

이터러블은 데이터를 담고 있는 그릇일 뿐, 실제로 물건을 꺼내려면 손같은 도구가 필요하다.

 

이터레이터(iterator): 데이터를 하나씩 꺼내는 손

이터레이터는 이터러블에서 데이터를 하나씩 꺼내는 도구이다.
쇼핑카트에서 손으로 물건을 꺼내는 모습을 떠올려 보자.
손(이터레이터)이 물건을 하나 꺼내고 나면, 다음 물건을 꺼낸다.

shopping_cart = ["사과", "바나나", "체리"]
iterator = iter(shopping_cart)  # 이터레이터 생성

print(next(iterator))  # 사과 꺼내기
print(next(iterator))  # 바나나 꺼내기
print(next(iterator))  # 체리 꺼내기

 

이터레이터는 한 번 사용하면 소모된다. 쇼핑카트가 비면 더 이상 꺼낼 수 없다!!

 

 

다시 정리해보자면, 이터러블과 이터레이터는 역할이 다르다.

  • 이터러블: 반복 가능한 데이터의 집합 (책, 쇼핑카트)
  • 이터레이터: 데이터를 하나씩 꺼내는 도구 (책갈피, 손)

이터러블이 꼭 필요한 이유는 반복해서 사용 가능하기 때문이다.
이터레이터는 한 번 소모되면 다시 사용할 수 없지만, 이터러블은 새로운 이터레이터를 만들어 반복 작업을 할 수 있다!

# 이터러블에서 여러 번 이터레이터 생성
my_list = [1, 2, 3]  # 이터러블
it1 = iter(my_list)
it2 = iter(my_list)

print(next(it1))  # 첫 번째 이터레이터로 1 꺼내기
print(next(it2))  # 두 번째 이터레이터로 다시 1 꺼내기

 

 

다른 예시

# 이터러블: 사과가 담긴 바구니
apple_basket = ["🍎 사과 1", "🍎 사과 2", "🍎 사과 3"]

# 이터레이터: 바구니에서 사과를 꺼내는 손
apple_iterator = iter(apple_basket)

# 사과를 하나씩 꺼내보기
print(next(apple_iterator))  # 🍎 사과 1
print(next(apple_iterator))  # 🍎 사과 2
print(next(apple_iterator))  # 🍎 사과 3

# 더 이상 꺼낼 사과가 없으면 에러 발생
# print(next(apple_iterator))  # StopIteration 에러 발생

 

 

모든 사과를 다 꺼내면 더 이상 꺼낼 게 없으니 StopIteration 에러가 발생한다.

 

728x90