이터레이터와 제너레이터는 데이터를 스캔하고 처리하는데 매우 유용한 도구입니다. 이들을 제대로 이해하고 활용하면 복잡한 데이터를 효과적으로 처리할 수 있습니다.
이터레이터 (Iterator)
이터레이터는 데이터 집합을 순차적으로 접근하는 방법을 제공하는 객체입니다. 데이터 집합은 리스트, 튜플, 집합 등의 데이터 구조일 수 있습니다. 이터레이터는 데이터 집합의 원소를 하나씩 순회하면서 접근할 수 있습니다.
my_list = [1, 2, 3, 4, 5]
my_iter = iter(my_list) # 이터레이터 생성
print(next(my_iter)) # 1 출력
print(next(my_iter)) # 2 출력
print(next(my_iter)) # 3 출력
print(next(my_iter)) # 4 출력
print(next(my_iter)) # 5 출력
이터레이터를 생성하고 next()
함수로 원소에 접근합니다. 원소에 접근할 때마다 이터레이터는 내부 상태를 업데이트하여 다음 원소에 접근할 수 있도록 합니다. 만약 모든 원소에 접근한 이후에 next()
함수를 호출하면 StopIteration
예외가 발생합니다.
제너레이터 (Generator)
제너레이터는 이터레이터를 생성하는 함수입니다. 제너레이터 함수는 yield
키워드를 사용하며, 호출될 때마다 이터레이터를 반환하여 데이터를 한 번에 하나씩 생성합니다.
def my_generator():
yield 1
yield 2
yield 3
yield 4
yield 5
my_gen = my_generator() # 제너레이터 생성
print(next(my_gen)) # 1 출력
print(next(my_gen)) # 2 출력
print(next(my_gen)) # 3 출력
print(next(my_gen)) # 4 출력
print(next(my_gen)) # 5 출력
제너레이터 함수를 정의하고 호출하여 제너레이터를 생성합니다. yield
키워드를 통해 값을 반환하며, 함수 실행이 중단된 후 다시 호출될 때 이전 상태를 기억하고 다음 값을 반환합니다.
데이터 스캔과의 활용
이터레이터와 제너레이터는 데이터를 효율적으로 스캔하고 처리하는데 사용됩니다. 예를 들어, 큰 데이터 집합에서 원하는 데이터를 찾거나 조건에 맞는 데이터를 필터링하는데 유용합니다. 또한, 제너레이터를 활용하여 데이터를 한 번에 처리하지 않고 필요할 때마다 생성하여 메모리 효율성을 개선할 수도 있습니다.
이터레이터와 제너레이터는 파이썬에서 강력한 데이터 처리 도구로 기능하며, 데이터 스캔과 관련된 작업을 수행할 때 활용할 수 있습니다.
#데이터 #이터레이터 #제너레이터