본문 바로가기

Python

[Python] enumerate() 함수 사용 방법 - 인덱스와 요소를 동시에!

파이썬에서의 반복문

파이썬에서는 `for`문을 이용하여 반복문을 제작하는 것이 가장 일반적입니다. `for`문은 보통 다음과 같은 방식으로 사용됩니다.

for <원소> in <리스트>:
    …
    …
    …

예시

예를 들어 어떤 리스트에 있는 원소를 출력하고 싶다면 어떻게 해야 할까요?
어떤 리스트를 `[‘A’, ‘B’, ‘C’]`라고 가정한다면 다음과 같이 작성할 수 있습니다.

for letter in [‘A’, ‘B’, ‘C’]:
    print(letter)

# 출력 결과
## A
## B
## C

만약 여기에서 인덱스(index)도 함께 출력하고 싶다면 어떻게 해야 할까요?

먼저 파이썬의 내장 함수인 `len()`과 `range()`를 이용하여 만든 인덱스 목록을 이용할 수 있습니다.

letters = [‘A’, ‘B’, ‘C’]
for idx in range(len(letters)):
    print(idx, letters[idx])

# 출력 결과
## 0 A
## 1 B
## 2 C

enumerate()

만약 `enumerate()`를 이용하여 위 문제를 푼다면 어떨까요?

for idx letter in enumerate([‘A’, ‘B’, ‘C’]):
    print(idx, letter)

# 출력 결과
## 0 A
## 1 B
## 2 C

`enumerate()`를 이용한다면 보다 간단하게 코드를 작성할 수 있습니다.

정리하자면 `enumerate()`함수는 인덱스와 원소로 이루어진 튜플을 만들어 주는 함수입니다.

> tuple(enumerate([‘A’, ‘B’, ‘C’]))
((0, ‘A’), (1, ‘B’), (2, ‘C’))

시작 인덱스 변경

반복문을 사용하다 보면 인덱스를 0이 아니라 1부터 시작하고 싶은 경우가 있습니다. 이런 경우 `start`인자를 이용할 수 있습니다.

> tuple(enumerate([‘A’, ‘B’, ‘C’], start=1))
((1, ‘A’), (2, ‘B’), (3, ‘C’))

참고

https://docs.python.org/ko/3/library/functions.html#enumerate