개요

이전에 하나의 리스트를 돌면서, 특정 원소가 몇번째에 위치하는지에 대한 정보를 이용하기 위해서는 어떻게 하였는지 생각해보자. 일반적으로 아래와 같이 작성하였을 것이다.

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 형태로 돌려준다.

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 변경

문제를 풀이하다보면, 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로 출력해보자.