BETTER WAY 7) range보다는 enumerate를 사용하라

C__W.A·2021년 7월 20일
0

이펙티브 파이썬

목록 보기
6/8
post-thumbnail

✅ range의 문제점

파이썬의 range 함수 특정 구간의 숫자의 범위를 만들어 주는 함수 입니다.

for i in range(10):
    print(i, end=" ")0 1 2 3 4 5 6 7 8 9

문자열로 이뤄진 list처럼 이터레이션할 대상 데이터 구조가 있으면 이 시퀀스에 대해 바로 루프를 돌 수 있다.

perfumes = ["diptyque", "BYREDO", "jomalone"]
for perfume in perfumes:
    print(f'{perfume} 입니다.')

리스트를 이터레이션하면서 리스트의 몇 번째 원소를 처리 중인지 알아야 할 때가 있다.

for i in range(len(perfumes)):
    perfume = perfumes[i]
    print(f"{i+1} : {perfume}")

perfumes나 range에 대해 이터레이션을 수행하는 다른 예제와 비교해보면 이 코드는 투박해 보인다. list의 길이를 알아야 하고, 인덱스를 사용해 배열에 원소에 접근해야 한다.

✅enumerate

이러한 문제점을 해결할 수 있는 enumrate 내장 함수를 제공한다. enumerate가 넘겨주는 각 쌍을 for 문에서 간결하게 언패킹할 수 있다.

for idx, perfume in enumerate(perfumes):
    print(f'{idx+1} : {perfume}')

✍🏻enumerate를 사용하면 코드가 휄씬 깔끔하고 가독성이 좋아진다.

enumerate의 두 번째 파라미터로 어디부터 수를 세기 시작할지 지정할 수 있다.

for idx, perfume in enumerate(perfumes, 1):
    print(f'{idx} : {perfume}')
profile
기술은 문제를 해결하기 위해 존재한다

0개의 댓글