enumerate( )은 파이썬의 내장함수이다.
enumerate는 이터레이터를 지연 계산 제너레이터로 감싸준다.
iterator의 원소값과 루프 인덱스 쌍으로 튜플형식으로 되돌려준다.
만일 우리가 리스트의 원소와 인덱스 값을 같이 출력 할때는 어떻게 표현할까?
보통 리스트의 인덱스 값과 리스트의 원소값을 같이 출력할 때 range(리스트의 길이)를 사용한다.
>>> color = ['파랑', '노랑', '초록', '검정']
>>> for i in range(len(color)):
print(f'리스트 color의 {i}번째 인덱스의 원소는 {color[i]}이다.')
리스트 color의 0번째 인덱스의 원소는 파랑이다.
리스트 color의 1번째 인덱스의 원소는 노랑이다.
리스트 color의 2번째 인덱스의 원소는 초록이다.
리스트 color의 3번째 인덱스의 원소는 검정이다.
출력문은 계속 배열의 인덱스값을 집어넣어서 원소값을 찾아내는 불필요한 연산이 계속 이루어진다.
이를 enumerate()로 해결할 수 있다.
다음은 next( ) 함수로 enumerate의 출력문을 알아보겠다.
1, enumerate( ) 안에 반복가능한 객체(iterator)을 넣어주면 다음과 같은 결과가 나온다.
enumerate(iterator)
>>> color = ['파랑', '노랑', '초록', '검정']
>>> it = enumerate(color)
>>> print(next(it))
(0, '파랑')
>>> print(next(it))
(1, '노랑')
(루프인덱스, 원소) 형태로 돌려준다 위치를 알아두자.
2, enumerate는 루프 인덱스의 시작값을 지정해줄 수 있다.
enumerate(iterator, 시작값)으로 지정해주면 된다. 다음은 시작값을 1로 추가해준 뒤의 결과이다.
>>> color = ['파랑', '노랑', '초록', '검정']
>>> it = enumerate(color, 1)
>>> print(next(it))
(1, '파랑')
>>> print(next(it))
(2, '노랑')
이전 결과와 달리 0에서 시작하지않고 1로 시작하는 것을 알 수 있다.
언패킹이 가능하기에 다음과 같이 활용이 가능하다.
for문을 통해 실행을 enumerate( )를 실행해보겠다.
>>> for i, color in enumerate(color):
print(f'리스트 color의 {i}번째 인덱스의 원소는 {color}이다')
리스트 color의 0번째 인덱스의 원소는 파랑이다
리스트 color의 1번째 인덱스의 원소는 노랑이다
리스트 color의 2번째 인덱스의 원소는 초록이다
리스트 color의 3번째 인덱스의 원소는 검정이다
우리는 인덱스 값을 리스트에 넣는 불필요한 연산없이 편하게 출력이 가능하다.
'Dev Lang > Python' 카테고리의 다른 글
[Python] 순열(Permutation) 구현 (0) | 2022.08.09 |
---|---|
[Python] 중복되는 데이터를 제거하고 싶을 경우 (0) | 2022.07.18 |
[Python] 넘파이 numpy (0) | 2022.03.02 |
[Python]Collections.Counter와 반올림 처리 (0) | 2022.02.21 |
[Python] sort( ), sorted( )에 대해서 (0) | 2022.02.15 |