시작하기무료로 시작하기

제너레이터 만들기

이전 연습 문제에서는 주로 컴프리헨션 문법을 사용하는 제너레이터 표현식을 작성했어요. 제너레이터 표현식에 컴프리헨션을 쓸 수 있어서 작업이 훨씬 쉬웠죠!

이제 영상에서 본 내용을 떠올려 보세요. 제너레이터 표현식뿐 아니라 제너레이터 함수 도 있습니다. 제너레이터 함수는 제너레이터 표현식처럼 하나의 값 대신 일련의 값을 차례로 내보내는 함수예요. 제너레이터 함수는 일반 함수와 동일하게 정의하지만, 값을 생성할 때는 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)
코드 편집 및 실행