defindex_words(text):result=[]iftext:result.append(0)forindex,letterinenumerate(text):ifletter==" ":result.append(index+1)returnresultaddress="four score and seven years ago..."# 샘플 입력이 적은 경우는 함수가 잘 동작result=index_words(address)print(result[:3])>>>[0,5,11]
위 예제의 문제점
코드가 복잡하고 깔끔하지 않음
반환하기 전 모든 결과를 리스트에 저장해야 한다는 점:
메모리 문제
제너레이터를 사용하여 더 좋은 코드를 구현할 수 있음
제너레이터란?
yield 표현식을 사용하는 함수
호출되면 실제로 실행하지 않고 바로 이터레이터를 반환
내장 함수 next를 호출할 때마다 이터레이터는 제너레이터가 다음 yield 표현식으로 진행하게 함
Comments