<Python> 반복 가능한 객체(Iterable)와 생성자(Generator)

반응형

파이썬의 반복 가능한 객체 소개

파이썬에서 반복 가능한 객체(Iterable)는 원소들을 하나씩 순회할 수 있는 객체를 의미합니다. 리스트, 튜플, 문자열 등이 대표적인 반복 가능한 객체입니다. 파이썬의 for문을 사용하면 반복 가능한 객체를 쉽게 순회할 수 있습니다.

my_list = [1, 2, 3, 4, 5]
for item in my_list:
    print(item)

파이썬의 이터레이터

반복 가능한 객체는 이터레이터(Iterator)라는 특별한 객체를 반환하는 __iter__() 메소드를 가지고 있습니다. 이터레이터 객체는 __next__() 메소드를 포함하며, 이 메소드를 호출하면 객체의 다음 원소가 반환됩니다. 반복 가능한 객체는 이터레이터 객체를 사용하여 내부 원소를 원하는 시점에 얻을 수 있습니다.

my_list = [1, 2, 3, 4, 5]
list_iterator = iter(my_list)

print(next(list_iterator))  # 출력: 1
print(next(list_iterator))  # 출력: 2

생성자 소개

파이썬에서 생성자(Generator)는 반복자를 반환하는 특별한 유형의 함수입니다. 생성자는 함수 코드의 실행을 일시 중단했다가 필요한 시점에 다시 실행할 수 있는 능력이 있습니다. 이 특징을 이용하면, 반복 가능한 객체를 대용량으로 생성할 때 메모리를 절약할 수 있습니다.

생성자 함수는 일반 함수와 다르게, 값을 반환하기 위해 return 대신 yield 키워드를 사용합니다. 생성자 함수가 호출되면, 함수 내부 코드가 바로 실행되지 않고 대신 이터레이터 객체를 반환합니다.

생성자 함수 작성하기

다음 예제는 제곱을 계산하는 간단한 생성자 함수를 작성한 것입니다.

def square_numbers(numbers):
    for number in numbers:
        yield number ** 2

이 생성자 함수를 사용하여 리스트의 제곱을 구할 수 있습니다.

my_list = [1, 2, 3, 4, 5]
squared_list = square_numbers(my_list)

for squared_number in squared_list:
    print(squared_number)

생성자 표현식

파이썬에서는 생성자 함수를 간결하게 표현하는 데 사용할 수 있는 생성자 표현식(Generator expression)이라는 문법이 있습니다. 생성자 표현식은 리스트 컴프리헨션과 매우 유사하며, 대괄호([]) 대신 괄호(())를 사용합니다.

예제:

my_list = [1, 2, 3, 4, 5]
squared_list = (number ** 2 for number in my_list)

for squared_number in squared_list:
    print(squared_number)

이 글에서는 파이썬의 반복 가능한 객체와 생성자에 대해 알아보았습니다.

 

반복 가능한 객체는 이터레이터 객체를 사용하여 원소를 하나씩 순회하는 기능을 제공하며, 생성자는 이터레이터를 반환하는 특별한 함수입니다. 생성자를 사용하면 대용량 데이터를 처리할 때 메모리 사용량을 최적화할 수 있습니다. 

 

감사합니다.

Designed by JB FACTORY