오늘은 파이썬에 항상 등장하는 enumerate 이라는 유용한 함수에 대해 알아보겠습니다.
1. enumerate 함수란?
Python에서 enumerate() 함수는 반복 가능한(iterable) 객체를 다룰 때, 인덱스와 요소를 함께 가져올 수 있도록 도와주는 내장 함수입니다. 일반적인 for 반복문을 사용할 때 인덱스를 따로 관리하지 않아도 되기 때문에 코드가 깔끔해지고 가독성이 향상됩니다.
2. enumerate 함수 사용법
(1) 기본 문법
enumerate() 함수는 다음과 같은 형식으로 사용됩니다:
enumerate(iterable, start=0)
- iterable : 리스트, 튜플, 문자열 등 반복 가능한 객체
- start : 인덱스 시작 값 (기본값은 0)
(2) 기본 사용 예제
fruits = ["apple", "banana", "cherry"]
for index, fruit in enumerate(fruits):
print(index, fruit)
출력:
0 apple
1 banana
2 cherry
위 예제에서 enumerate()를 사용하여 각 요소의 인덱스와 값을 함께 출력할 수 있습니다.
3. enumerate 함수의 동작 원리
Python에서 enumerate() 함수는 이터레이터(iterator) 객체를 반환하며, 내부적으로 zip()과 같은 방식으로 작동합니다. 이를 next() 함수를 사용하여 확인해 볼 수 있습니다.
numbers = [10, 20, 30]
enum_obj = enumerate(numbers)
print(next(enum_obj)) # (0, 10)
print(next(enum_obj)) # (1, 20)
print(next(enum_obj)) # (2, 30)
💡 enumerate()는 반복할 때마다 (index, value) 튜플을 반환하는 구조로 되어 있습니다.
4. enumerate의 다양한 활용 예제
(1) start 값 변경하기
colors = ["red", "green", "blue"]
for index, color in enumerate(colors, start=1):
print(index, color)
출력:
1 red
2 green
3 blue
start=1을 설정하면 인덱스가 0이 아닌 1부터 시작합니다.
(2) 리스트 내포(list comprehension)와 함께 사용하기
names = ["Alice", "Bob", "Charlie"]
indexed_names = [(i, name) for i, name in enumerate(names)]
print(indexed_names)
출력:
[(0, 'Alice'), (1, 'Bob'), (2, 'Charlie')]
(3) 딕셔너리 변환
items = ["Pen", "Notebook", "Eraser"]
item_dict = dict(enumerate(items, start=1))
print(item_dict)
출력:
{1: 'Pen', 2: 'Notebook', 3: 'Eraser'}
💡 enumerate()를 활용하면 리스트를 쉽게 딕셔너리로 변환할 수도 있습니다.
(4) 인덱스가 홀수인 요소만 출력하기
words = ["one", "two", "three", "four"]
for index, word in enumerate(words):
if index % 2 == 1:
print(index, word)
출력:
1 two
3 four
💡 enumerate()를 활용하면 특정 인덱스 조건을 걸어 원하는 요소만 추출할 수도 있습니다.
5. enumerate 함수의 특징
✅ 가독성 향상: 별도로 인덱스 변수를 선언할 필요가 없어 코드가 깔끔해집니다.
✅ 튜플 반환: (index, value) 형태의 튜플을 반환하므로 다양한 활용이 가능합니다.
✅ 반복문과 함께 사용: for 문에서 특히 유용하며, 리스트 내포와 조합하면 더욱 강력합니다.
✅ start 값 설정 가능: 기본적으로 0부터 시작하지만 원하는 숫자로 조정할 수 있습니다.
6. 마무리
이번 글에서는 enumerate() 함수의 사용법과 특징에 대해 살펴보았습니다.
enumerate 함수에 대해 핵심만 정리해보자면 아래와 같습니다.
✔ enumerate()를 사용하면 반복문에서 인덱스를 따로 관리할 필요가 없음
✔ (index, value) 형태로 데이터를 다룰 수 있어 리스트, 튜플, 딕셔너리 변환 등에 활용 가능
✔ start 값을 조정하여 1부터 시작하는 번호를 쉽게 만들 수 있음
Python에서 enumerate()는 매우 유용한 내장 함수입니다. 잘 활용하면 코드 가독성도 좋아지며 부수적인 기능을 유용하게 사용할 수 있습니다.
혹시 내용중에 이해가 안되시거나 추가로 궁금한 부분 있으면 댓글로 언제든지 피드백 주세요! ㅎㅎ
댓글