이번 강좌에서는 파이썬에서 iterable 객체를 순회 할 때 자주 사용되는 enumerate 에 대해 살펴 보겠다. enumerator는 튜플에 대한 개념이 있어야 하므로 혹시 튜플이 낮설다면 [여기]를 한번 살펴 보고 돌아 오면 좋다.
enumerate 란?
- 반복자(iterator) 처럼 동작하는 객체(반복자에 대한 설명은 [여기]에 정리 되어 있다).
- iterable 객체를 인자로 받아서 생성
- 순회시 "(index, 요소)" 형태의 튜플(tuple) 객체를 반환
enumerate는 반복자 처럼 동작하는 객체로써 특징으로 각 반복시 요소와 함께 인덱스도 리턴한다. 아래 예제와 같이 리스트를 순회하며 인덱스가 필요한 경우, 인덱스를 저장하기 위해 따로 변수를 선언하는 복잡한 코드 대신 enumerate를 이용해 간단히 만들 수 있다.
fruits = ['apple', 'orange', 'strawberry']
# 단순 리스트만 사용한 예제
index = 0
for itr in fruits :
fruit = itr
print(f'{index}:{fruit}', end=' ')
index += 1
print()
# enumerate
for itr in enumerate(fruits) :
# itr = (index, 요소)
index = itr[0]
fruit = itr[1]
print(f'{index}:{fruit}', end=' ')
print()
# enumerate + unpacking
for index, fruit in enumerate(fruits) :
print(f'{index}:{fruit}', end=' ')
맨위의 단순 리스트를 이용하는 예제와 비교하여 가장 아래 enumerate 와 unpacking 까지 이용한 예제를 살펴 보면 코드가 꽤 간결해지고 보기 편해졌다.
마치며
이상으로 반복자에 관련된 강의를 마치고 다음 강의 부터 파이썬의 제너레이터에 대해 알아 보도록 하겠다.