Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬 enumerate() 함수 완벽 가이드: 문법부터 실전 예제까지

enumerate() 함수란?

파이썬에서 반복자(iterator)를 사용할 때는 현재 몇 번째 항목을 처리하고 있는지 함께 추적해야 하는 경우가 많습니다. 이럴 때 유용하게 쓰이는 것이 바로 내장 함수 enumerate()입니다. enumerate()는 반복 가능한 객체(iterable)에 자동으로 카운터를 붙여 주며, 그 결과로 열거형(enumerate) 객체를 반환합니다.

enumerate()의 기본 문법과 매개변수는 다음과 같습니다.

enumerate(iterable, start=0)
iterable - 리스트·튜플 등 시퀀스, 반복자 또는 반복을 지원하는 모든 객체
start    - 카운트가 시작되는 위치이며, 기본값은 0

기본 사용 예제

아래 예제에서는 요일 이름을 담은 집합(set)에 enumerate()를 적용해 보겠습니다. 시작 값을 따로 지정하지 않으면 기본적으로 0부터 카운트가 시작됩니다. 참고로 집합은 순서가 없는 자료형이므로 실행할 때마다 출력 순서는 달라질 수 있습니다. 두 번째 매개변수인 start 값을 5로 변경하면 카운트되는 항목의 개수는 그대로이면서 번호가 5부터 매겨지는 것을 확인할 수 있습니다.

days = { 'Mon', 'Tue', 'Wed', 'Thu' }
enum_days = enumerate(days)
print(type(enum_days))

# 리스트로 변환하여 출력
print(list(enum_days))

# 시작 카운터 값을 5로 변경
enum_days = enumerate(days, 5)
print(list(enum_days))

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

<class 'enumerate'>
[(0, 'Tue'), (1, 'Thu'), (2, 'Mon'), (3, 'Wed')]
[(5, 'Tue'), (6, 'Thu'), (7, 'Mon'), (8, 'Wed')]

for 루프와 함께 활용하기

enumerate() 객체는 for 루프와 함께 사용할 수도 있습니다. 아래 코드처럼 루프 안에서 각 요소를 개별적으로 출력하면 인덱스와 값이 한 쌍으로 묶여 편리하게 처리됩니다.

예제

days = { 'Mon', 'Tue', 'Wed', 'Thu' }

# 루프를 이용한 enumerate 사용
for item in enumerate(days):
    print(item)

# 시작 값을 5로 지정하고 인덱스와 값 분리 출력
for count, day in enumerate(days, 5):
    print(count, day)

실행 결과

(0, 'Thu')
(1, 'Tue')
(2, 'Wed')
(3, 'Mon')
5 Thu
6 Tue
7 Wed
8 Mon

마무리

이처럼 enumerate()를 활용하면 인덱스 변수를 직접 선언하고 증가시키는 번거로움 없이도 반복 작업에서 항목의 순서 정보를 깔끔하게 다룰 수 있습니다. 특히 리스트나 문자열을 순회하면서 위치 정보가 필요할 때 코드의 가독성을 크게 높여 주는 필수 도구이므로 꼭 익혀 두시기 바랍니다.