제너레이터 만들기
이전 연습 문제에서는 주로 컴프리헨션 문법을 사용하는 제너레이터 표현식을 작성했어요. 제너레이터 표현식에 컴프리헨션을 쓸 수 있어서 작업이 훨씬 쉬웠죠!
이제 영상에서 본 내용을 떠올려 보세요. 제너레이터 표현식뿐 아니라 제너레이터 함수 도 있습니다. 제너레이터 함수는 제너레이터 표현식처럼 하나의 값 대신 일련의 값을 차례로 내보내는 함수예요. 제너레이터 함수는 일반 함수와 동일하게 정의하지만, 값을 생성할 때는 return 대신 yield 키워드를 사용합니다.
이 연습에서는 이전 연습 문제에서 정의했던 제너레이터 표현식과 유사한 메커니즘을 가진 제너레이터 함수를 만들어 볼 거예요:
lengths = (len(person) for person in lannister)
이 연습은 강의의 일부입니다
Python 도구 상자
연습 안내
- 매개변수
input_list하나를 받는 함수get_lengths()의 함수 헤더를 완성하세요. - 함수 정의의
for루프에서,input_list에 있는 문자열의 길이 를yield하세요. get_lengths()제너레이터 함수가 생성한 값을 출력하는for루프의 이터러블 부분을 완성하세요. 리스트lannister를 전달하여get_lengths()를 호출하세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# Create a list of strings
lannister = ['cersei', 'jaime', 'tywin', 'tyrion', 'joffrey']
# Define generator function get_lengths
def ____:
"""Generator function that yields the
length of the strings in input_list."""
# Yield the length of a string
for person in input_list:
____
# Print the values generated by get_lengths()
for value in ____:
print(value)