이전에 하나의 리스트를 돌면서, 특정 원소가 몇번째에 위치하는지에 대한 정보를 이용하기 위해서는 어떻게 하였는지 생각해보자. 일반적으로 아래와 같이 작성하였을 것이다.
index = 0
_list = ['a', 'c', 'd']
for element in _list :
print(index, element)
index += 1
# 0 a
# 1 c
# 2 d
또는 len 함수를 이용하여 다음과 같이 작성할 수도 있을 것이다.
_list = ['a', 'c', 'd']
for index in range(len(_list)):
print(index, _list[index])
# 0 a
# 1 c
# 2 d
위와 같이 코드를 작성하는 것을 파이썬스럽지(pythonic) 않다고 표현한다. 파이썬에서 제공해주는 함수를 적절하게 사용하지 않았기 때문이다. 이제 파이썬스럽게 코드를 작성하는 것을 배워보자.
enumerate는 ‘열거하다’라는 뜻이다. 이 함수는 순서가 잇는 자료형(리스트, 튜플, 문자열)을 입력으로 받아 인덱스 값을 포함하는 enumerate 형태로 돌려준다.
enumerate 형태는 ( **index, 원소** )의 구조를 띄고 있는 튜플 객체이다.
_list = ['a','b','c']
for index, element in enumerate(_list):
print(index, element)
# 0 a
# 1 b
# 2 c
만약 이를 하나의 변수로 받아서 출력을 진행하면 아래와 같은 결과를 얻는다.
_list = ['a','b','c']
for entry in enumerate(_list):
print(entry)
# (0, 'a') 튜플
# (1, 'b')
# (2, 'c')
문제를 풀이하다보면, index를 0부터 시작하는 것이 아니라 1부터 시작해야하는 경우도 종종 존재한다.
그럴 때는 아래와 같이 추가적인 정보를 작성하면 된다.
_list = ['a','b','c']
for index, element in enumerate(_list, start=1):
#for index, element in enumerate(_list, 1): 위와 동일
print(index, element)
# 1 a
# 2 b
# 3 c
start = 1과 같이 시작할 숫자를 지정해주면, index의 시작 값이 달라지게 설정할 수 있다.
0 홍길동 1 김나박이 2 파이썬
위와 같은 구조로 enumerate로 출력해보자.