이터레이터와 제너레이터를 활용한 데이터 스캔

이터레이터와 제너레이터는 데이터를 스캔하고 처리하는데 매우 유용한 도구입니다. 이들을 제대로 이해하고 활용하면 복잡한 데이터를 효과적으로 처리할 수 있습니다.

이터레이터 (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 키워드를 통해 값을 반환하며, 함수 실행이 중단된 후 다시 호출될 때 이전 상태를 기억하고 다음 값을 반환합니다.

데이터 스캔과의 활용

이터레이터와 제너레이터는 데이터를 효율적으로 스캔하고 처리하는데 사용됩니다. 예를 들어, 큰 데이터 집합에서 원하는 데이터를 찾거나 조건에 맞는 데이터를 필터링하는데 유용합니다. 또한, 제너레이터를 활용하여 데이터를 한 번에 처리하지 않고 필요할 때마다 생성하여 메모리 효율성을 개선할 수도 있습니다.

이터레이터와 제너레이터는 파이썬에서 강력한 데이터 처리 도구로 기능하며, 데이터 스캔과 관련된 작업을 수행할 때 활용할 수 있습니다.

#데이터 #이터레이터 #제너레이터