파이썬을 배우다보면 이터러블(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
'IT > Python' 카테고리의 다른 글
[파이썬] 람다 함수(Lambda) 쉽게 이해하기 (0) | 2025.01.14 |
---|---|
[파이썬] 클로저(Closure) 쉽게 이해하기 (0) | 2025.01.12 |
[장고] SSL 인증서 구매, runsslserver로 적용 (0) | 2022.05.04 |
[DSAC M1] DataFrame, Series 정리 (0) | 2021.08.19 |
[DSAC M1] Pandas(판다스) - DataFrame, Series 기본 개념 (0) | 2021.08.17 |