본문 바로가기
카테고리 없음

파이썬 generator 제너레이터 사용법

by 퍼포먼스마케팅코더 2023. 8. 11.
반응형

파이썬의 제너레이터(generator)

파이썬의 제너레이터는 반복자(iterator)를 생성하는 특별한 종류의 함수입니다. 제너레이터는 일반 함수와 달리, 한 번 호출될 때마다 결과를 반환하고 다음 호출을 위해 상태를 기억합니다. 이를 통해 메모리 효율성을 높이며, 큰 데이터 집합을 순회할 때 유용합니다.

제너레이터의 특징

  1. yield 키워드 사용: 제너레이터 함수 내부에서 return 대신 yield 키워드를 사용하여 값을 반환합니다.
  2. 상태 유지: yield를 통해 값을 반환한 후, 다음 호출 때 이전 상태를 기억하여 계속 실행합니다.
  3. 메모리 효율적: 제너레이터는 한 번에 하나의 값만 생성하므로 큰 데이터 집합을 처리할 때 메모리를 절약할 수 있습니다.

제너레이터 사용 예

다음은 제너레이터를 사용하여 피보나치 수열을 생성하는 예시입니다.

def fibonacci():
    a, b = 0, 1  # 초기값 설정
    while True:
        yield a  # 현재 값을 반환하고 함수의 상태를 기억
        a, b = b, a + b  # 다음 값 계산

fibo_gen = fibonacci()  # 제너레이터 객체 생성
for i, value in enumerate(fibo_gen):
    if i == 10:
        break  # 10번째 값까지만 출력
    print(value)

제너레이터는 for 루프와 함께 사용되어 순회 가능한 객체를 생성하며, next 함수를 사용하여 직접 값을 얻을 수도 있습니다.

정리

제너레이터는 큰 데이터 집합의 순회, 복잡한 제어 흐름, 비동기 프로그래밍 등 다양한 상황에서 유용하게 사용될 수 있으며, 파이썬의 강력한 기능 중 하나입니다. 특히 메모리 효율성과 코드의 가독성 측면에서 매우 중요한 역할을 합니다.

추가

enumerate는 파이썬의 내장 함수로, 순회 가능한(iterable) 객체를 인자로 받아 인덱스와 값을 동시에 반환해주는 역할

enumerate의 사용 예

for index, value in enumerate(['a', 'b', 'c']):
    print(index, value)

위 코드의 출력 결과는 다음과 같습니다:

0 a
1 b
2 c

enumerate의 매개변수

enumerate 함수는 두 개의 매개변수를 가집니다:

  1. iterable: 순회 가능한 객체 (예: 리스트, 튜플, 문자열 등)
  2. start: 인덱스의 시작 값을 지정할 수 있으며, 기본값은 0입니다.
for index, value in enumerate(['a', 'b', 'c'], start=1):
    print(index, value)

위 코드의 출력 결과는 인덱스가 1부터 시작합니다:

1 a
2 b
3 c

정리

enumerate 함수는 순회 가능한 객체를 순회하면서 현재 인덱스와 해당 인덱스의 값을 동시에 반환해주는 유용한 함수입니다. for 루프와 함께 사용하면 코드를 더 깔끔하고 읽기 쉽게 만들 수 있습니다.

반응형

댓글