더북(TheBook)

flavor_listrange에 대해 이터레이션을 수행하는 다른 예제와 비교해보면 이 코드는 투박해 보인다. list의 길이를 알아야 하고, 인덱스를 사용해 배열 원소에 접근해야 한다. 이렇게 단계가 여러 개이므로 코드를 읽기 어렵다.

파이썬은 이런 문제를 해결할 수 있는 enumerate 내장 함수를 제공한다. enumerate는 이터레이터를 지연 계산 제너레이터(lazy generator)로 감싼다(Better way 30: ‘리스트를 반환하기보다는 제너레이터를 사용하라’ 참고). enumerate는 루프 인덱스와 이터레이터의 다음 값으로 이뤄진 쌍을 넘겨준다(yield). 다음 코드는 next 내장 함수를 사용해 다음 원소를 가져온다. 이로부터 enumerate가 반환한 이터레이터가 어떻게 동작하는지 볼 수 있다.

it = enumerate(flavor_list)
print(next(it))
print(next(it))

>>>
(0, '바닐라')
(1, '초콜릿')
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.