Effective Python C1. Pythonic(7) - range보다는 enumerate를 사용하라

1 분 소요

Introduction

range 내장 함수는 일정 범위의 정수 집합을 이터레이션하는 루프가 필요할 때 쓰인다. 그러나 특정 이터러블 객체를 인덱싱하면서 동시에 그 값에 접근하고자할 때는 enumerate가 쓰일 수 있다.

Best WAY 7 : range보다는 enumerate를 사용하라

enumerate 내장 함수는 이터레이터를 지연 계산 제너레이터(lazy generator)로 감싸고, 루프 인덱스와 이터레이터의 다음 값으로 이뤄진 쌍을 넘겨준다.

# range를 사용할 경우
flavor_list = ['용과', '두리안', '람부탄']

for i in range(len(flavor_list)):
    print(f'{i + 1}: {flavor_list[i]}')

# enumerate를 사용할 경우
for i, flavor in enumerate(flavor_list):
    print(f'{i + 1}: {flavor}')

# 두 번째 파라미터를 이용해 0번째 원소부터의 인덱스를 다른 값으로 시작하도록 지정 가능.
for i, flavor in enumerate(flavor_list, 1):
    print(f'{i}: {flavor}')

Discussion

enumerate 내장 함수는 자주 쓰이기 때문에 익혀서 range를 거의 대체하여도 좋다.

Summary

  • range로 루프를 돌면서 시퀀스 원소를 인덱스로 가져오기보다는 enumerate를 사용하라.
  • enumerate의 두 번째 파라미터로 어디부터 원소를 가져올지 정할 수 있다.

Reference

파이썬 코딩의 기술 제 2판. - 브렛 슬리킨 지음 / 오현석 옮김