본문 바로가기

프로그래머/Python

[윤성우의 열혈 파이썬 중급편] 10. generator 표현식

출처 : 윤성우의 열혈 파이썬 : 중급

10. generator 표현식

하나의 문장으로 generator를 구성하는 방법

  • generator 함수 & generator 표현식
  • generator 표현식은 generator 함수와 마찬가지로 generator 객체를 생성하는 방법이다
  • generator 표현식의 문법 구성이 list 컴프리헨션과 거의 같다
def show_all(s):
    for i in s:
        print(i, end = ' ')

st = [2 * i for i in range(1, 10)]
show_all(st)

def times2():
    for i in range(1, 10):
        yield 2 * i

g = times2()
show_all(g)

g = (2 * i for i in range(1, 10))
show_all(g)
  • generator 표현식은 괄호만 [] -> ()으로 바뀌었을 뿐, 그 안을 채우는 방법은 list 컴프리헨션과 같다
  • 이를 generator 표현식이라 한다
g = (2 * i for i in range(1, 10))

next(g)     # 2
next(g)     # 4
  • 역시 lazy evaluation

generator 표현식을 직접 전달하기

def show_all(s):
    for i in s:
        print(i, end = ' ')

show_all((2 * i for i in range(1, 10)))

# 다음과 같이 소괄호를 생략할 수 있다
show_all(2 * i for i in range(1, 10))