제너레이터 표현식

매일 공부(ML)·2023년 4월 10일
0

Fluent Python

목록 보기
102/130

제어 흐름

반복형, 반복자, 제너레이터

제너레이터 표현식

제너레이터 표현식은 지능형 리스트의 느긋한 버전으로 리스트를 생성하는 대신, 필요에 따라 항목을 느긋하게 생성하는 제너레이터를 반환하므로 지능형 리스트가 리스트 팩토리라면, 제너레이터 표현식은 제너레이터 팩토리라고 생각할 수 있다.

def gen_AB():
	print('start')
    yield 'A'
    print('continue')
    yield 'B'
    print('end.')

res1 = [x*3 for x in gen_AB()]

for i in res1:
	print('-->', i)
    
res2 = (x*3 for x in gen_AB())
res2
for i in res2:
	print('-->', i)

제너레이터 표현식은 제너레이터를 생성하고, 이 표현식을 사용하면 Sentence 클래스의 코드를 더 짧게 만들 수 있다.

import re
import reprlib

RE_WORD = re.compile('\w+')

class Sentence:

	def __init__(self, text):
    	self.text = text
        
    def __repr__(self):
    	return 'Sentence(%s)' reprlib.repr(self.text)
        
    def __iter__(self):
    	return (match.group() for match in RE_WORD.finditer(self.text))

제너레이터 함수가 아니면, 제너레이터를 생성해서 반환하는 제너레이터 표현식을 사용한다.

제너레이터 표현식은 편리 구문으로, 제너레이터 함수로 대체할 수 있지만, 더 편한 경우도 있다.

profile
성장을 도울 아카이빙 블로그

0개의 댓글