[파이썬 코딩의 기술] - 7. range 보다는 enumerate를 사용하라

Dreamer ·2021년 6월 29일
0

range 함수를 쓰는 경우는 주로 '숫자나 문자열'의 리스트를 순회(iterate)하는 루프를 실행할 때이다.

하지만 종종 리스트의 인덱스를 함께 산출해야 하는 경우가 있다. 이런 상황에선 range 함수보단 enumerate 함수가 좀 더 효율적이다.

아래 두 코드는 같은 결과를 산출하지만 위에는 range 함수를, 아래에는 enumerate 함수를 사용하였다.

range 함수는 len()함수를 통해 list의 길이를 알아야하고, 인덱스를 사용해[i] 배열 원소에 접근해야 한다.
enumerate 함수는 그렇지 않다.

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

지연 평가란?

따라서 for 문에서 간결하게 언패킹할 수 있다.
또한, 출력할 때 어디부터 수를 세기 시작할 지 지정할 수 있다. (디폴트 값은 0)
위에는 숫자를 지정하지 않았기에 0부터 출력되었고, 아래 코드는 1로 지정하여 1부터 숫자가 카운트되었다.


[적용]

위키피디아 문서 데이터를 로드하여 일부만 가져오고 싶을 때 range, enumerate 함수 두 가지를 사용해보았다.

두 함수 모두 동일한 결과를 산출하였으나, range 함수를 사용할 때는 line을 인덱스를 사용해 접근해야 한다.

위처럼 리스트의 인덱스가 함께 필요할 경우 enumerate 함수를 사용하는 것이 코드가 간결해진다.

[요약]
1. enumerate를 사용하면 이터레이터에 대해 루프를 돌면서 원소의 인덱스까지 간결하게 가져올 수 있다.
2. enumerate의 두 번째 파라미터로 어디부터 수를 세기 시작할 지 지정할 수 있다.

한 줄 생각

인덱스도 필요할 경우엔!!! enumerate!!
profile
To be a changer who can overturn world

0개의 댓글