본문 바로가기
5-1. 파이썬 제공 기본 자료구조/반복자

[파이썬] 반복자(Iterator)란 무엇인가?

by 만다린망고 2025. 6. 30.
반응형

반복자는 리스트나 튜플로 되어 있는 데이터에 순서대로 접근할 수 있게 해주는 객체입니다. 

저는 이런 의문이 들었습니다. 

인덱싱을 이용하여 리스트나 튜플의 원소에 접근하면 될텐데 왜 반복자라는게 고안된 것일까?

가장 큰 이유는 메모리의 효율성 때문입니다. 데이터 크기가 매우 큰 경우 메모리에 한번에 올리지 못할 수도 있습니다. 이때 반복자를 이용하면 순서대로 메모리에 올리고 제거하기를 반복합니다. 따라서 메모리를 효율적으로 사용할 수 있습니다.

다시 이런 의문이 들었습니다. 

어차피 처음에 데이터는 다 불러오는거 아닌가? 

데이터가 너무 클 경우 pd.read_csv 로 한번에 읽는 것 자체가 불가능합니다. 이때는 반복자로 불러와야 합니다. 이미 데이터를 불러온 상황이라고 해도, GPU를 사용한다면 학습 시 GPU에 데이터를 올리게 됩니다. 이때 반복자를 사용해서 메모리를 효율적으로 사용할 수 있습니다.

이제 반복자를 어떻게 만드는지 알아봅시다. 반복자는 아래와 같이 iter 함수를 이용하여 만듭니다. 반복자에서 원소를 꺼낼때는 next 함수를 사용합니다. 

my_list = [10, 20, 30]

# 1. iter() 함수로 리스트의 반복자(iterator)를 얻는다.
my_iterator = iter(my_list)

print(type(my_iterator))  # <class 'list_iterator'> --> Iterator

# 2. next() 함수로 값을 하나씩 꺼낸다.
print(next(my_iterator))  # 출력: 10
print(next(my_iterator))  # 출력: 20
print(next(my_iterator))  # 출력: 30



만약 print(next(my_iterator)) 를 한번 더 입력할 경우 Exception(예외)가 발생합니다. 모든 반복을 다 수행해서 반복자에 남아있는 것이 없기 때문입니다. 

반응형

댓글