range 함수는 정수 범위의 집합을 이터레이션(iterate)
하는 루프가 필요할때 유용하게 사용된다.
이터레이션할 리스트가 정해져 있는 데이터 구조가 있다면
그 스퀸스에 대한 루프를 돌릴 수 있다.
리스트를 이터레이션하면서 리스트의 몇 번째 원소를 처리 중인지 알아야 할 때가 있다.
예를 들어서
예시 음식 리스트의 선호도 순위를 출력 하고자 한다.
이때 range를 사용하는 방법도 있다.
이터레이션할 횟수가 정해져 있을때 사용하면 좋다.
[output]
언급하였듯이,
range 함수 사용시에 list 길이를 알아야하고, 인덱스를 사용해 배열 원소에 접근해야 한다.
이렇게 단계가 여러 개 이므리 코드가 투박하고 읽기 어렵다.
이러한 문제를 해결 하기 위해서
enumerate 함수를 제공한다.
enumerate 함수는 이터레이터를 지연 계산 제너레이터(lazy gengerator)로 감싼다.
또한 루프 인덱스와 이터레이터의 다음 값으로 이뤄진 쌍을 넘겨준다.
예제를 통해서 enumerate 함수를 좀더 자세히 알아보자.
(next 함수를 사용해서 다음 원소를 가지고 온다.)
[output]
enumerate 함수가 반환해준 각 쌍을 for 문에서 간결하게 언패킹 할 수 있다.
[output]
enumerate 의 파라미터를 활용해서 어디서 부터 수를 세기 시작할지 지정할 수 있다.
(디폴트 값은 0이다.)

결론 : range에 대해 루프를 돌면서 시퀀스의 원소를 인덱스로
가져오기보다는
enumerate 를 사용하라.
reference
1.https://wayhome25.github.io/python/2017/02/24/py-07-for-loop/
파이썬 파트7. for in 반복문, range, enumerate · 초보몽키의 개발공부로그
파이썬 파트7. for in 반복문, range, enumerate 24 Feb 2017 | python 파이썬 for in 반복문 파이썬 파트7. for in 반복문, range, enumerate try hello world 파이썬 입문 강의 for in list 코드를 필요한만큼 반복해서 실행 li
wayhome25.github.io
2. 파이썬 코딩의 기술
'Python' 카테고리의 다른 글
Pandas DataFrame 첫번째 행을 헤더로 지정 (0) | 2022.03.11 |
---|---|
for 나 while 루프 뒤에 else 블록을 사용하지 말자 (0) | 2022.01.18 |
Numpy.transpose (0) | 2022.01.10 |
Numpy.dot (0) | 2022.01.10 |
Numpy.sort, argsort (0) | 2022.01.09 |