더북(TheBook)

언패킹의 용례 중에서 또 한 가지 쓸모 있는 것으로 for 루프 또는 그와 비슷한 다른 요소(컴프리헨션(comprehension)이나 제너레이터 식)의 대상인 리스트의 원소를 언패킹하는 것이 있다(Better way 27: ‘mapfilter 대신 컴프리헨션을 사용하라’ 참고). 비교를 위해 먼저 언패킹을 사용하지 않고 간식이 들어 있는 list에 대해 이터레이션(iteration)하는 코드를 살펴보자.

snacks = [('베이컨', 350), ('도넛', 240), ('머핀', 190)]
for i in range(len(snacks)):
    item = snacks[i]
    name = item[0]
    calories = item[1]
    print(f'#{i+1}: {name} 은 {calories} 칼로리입니다.')

>>>
#1: 베이컨 은 350 칼로리입니다.
#2: 도넛 은 240 칼로리입니다.
#3: 머핀 은 190 칼로리입니다.

잘 작동하지만 잡음이 많다. snacks 구조 내부의 깊숙한 곳에 있는 데이터를 인덱스로 찾으려면 코드가 길어진다. 다음 예제는 enumerate 내장 함수(Better way 7: ‘range보다는 enumerate를 사용하라’ 참고)와 언패킹을 사용해 똑같은 출력을 만들었다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.