Home [Better Way #32] 긴 리스트 컴프리헨션보다는 제너레이터 식을 사용하라
Post
Cancel

[Better Way #32] 긴 리스트 컴프리헨션보다는 제너레이터 식을 사용하라

본문은 “파이썬 코딩의 기술 (Effective Python, 2판)”“Chapter 04. Comprehensions and Generators”을 읽고 정리한 내용입니다.


제너레이터 식 ()

1
2
roots = ((x, x**0.5) for x in it)
print(next(roots))
  • 리스트 컴프리헨션의 문제점: 입력이 커지면 메모리를 상당히 많이 사용하고 프로그램이 중단될 수 있다.
  • 제너레이터 식이란 리스트 컴프리헨션과 제너레이터를 일반화한 것으로, () 사이에 리스트 컴프리헨션과 비슷한 구문을 넣어 제너레이터 식을 만들 수 있다.
  • 제너레이터 식에 들어있는 식으로부터 원소를 하나씩 만들어내는 이터레이터가 생성된다.
    • 한 번에 원소를 하나씩 반환하므로 메모리 문제를 피할 수 있다.
    • next 내장 함수를 이용할 수 있다.
  • 두 제너레이터 식을 합성할 수 있다.
    • 이터레이터를 전진시킬 때마다 내부의 이터레이터도 전진한다.
    • 가능한 메모리를 효율적으로 사용하면서 동작한다.
  • 아주 큰 입력 스트림에 대해 여러 기능을 합성해 적용해야 할 때 유용하다.
  • 제너레이터가 반환하는 이터레이터에는 상태가 있으므로 이터레이터를 단 한 번만 사용해야 한다.
This post is licensed under CC BY 4.0 by the author.

[Better Way #31] 인자에 대해 이터레이션할 때는 방어적이 돼라

[Better Way #33] yield from을 사용해 여러 제너레이터를 합성하라