파이썬 Enumerate 함수 뜻, 쓰는 이유, 예제 (for문 변수 2개 사용법)

for문으로 반복할 때마다 값 뿐만 아니라 값의 인덱스도 함께 사용하고 싶지 않으셨나요? 그렇다면 enumerate( ) 함수가 해결책이 되어줄 겁니다. 물론 Enumerate 함수를 쓰지 않아도 반복할 때마다 인덱스 값을 추출할 순 있지만 enumerate 함수를 사용하면 더 간편하게 for 문을 반복하면서 인덱스 값도 꺼내서 쓸 수 있습니다.

enumerateI( ) 함수가 값과 그 값의 인덱스를 추출할 때 왜 그렇게 간편한지 이 글을 통해 확인해 보세요!

enumerate 함수 개념

반복 가능한 객체인 이터러블(iterable)에 카운터를 추가해주고 enumerate 오브젝트를 반환해줍니다. 여기서 카운터란 개수를 1씩 증가 시켜주는 변수입니다. 다른 말로 카운터는 인덱스 값을 1씩 증가 시켜주는 변수입니다.

좀 더 정확히 이해하자면 인덱스 값을 1씩 증가 시켜주는 카운터라는 변수를 반복 가능한 객체의 각 요소에 추가한다는 의미입니다.

enumerate 함수 사용법

enumerate 함수의 가장 기본적인 사용법부터 살펴보겠습니다. 아래의 코드를 보면서 한 줄 한 줄 설명해드리겠습니다.

people = ["Jane", "Peter", "John"] 
enumerated_people = enumerate(people)
print(list(enumerated_people)

[(0, 'Jane'), (1, 'Peter'), (2, 'John')]

1번째 줄에서는 people 이라는 리스트를 만들었습니다. 참고로 리스트는 반복 가능한 객체인 이터러블의 종류 중 하나죠.

2번째 줄에서는 이 people 리스트를 enumerate( ) 함수의 인자로 전달했습니다.

3번째 줄에서 list 함수에 enumerate( ) 함수를 전달해서 출력했습니다. 근데 갑자기 enumerate( ) 함수를 list 함수의 인자로 왜 전달했는지 의아한 분도 계실 텐 데요. enumerate( ) 함수를 그대로 출력하면 enumerate 오브젝트가 출력이 됩니다. 이 오브젝트에 담긴 값들은 list 형식으로 저장되어 있어서 다시 list에 전달해줘야 안의 값들을 볼 수 있습니다.

5번째 줄에서 enumerate 오브젝트 안에 포함된 요소들을 볼 수 있습니다. 볼 수 있듯이 각 요소마다 인덱스 값과 데이터가 순차적으로 저장되어 있습니다.

 

enumerate 함수 2번째 사용법

enumerate 함수는 for문과 함께 사용할 때 유용합니다. 아래에 코드를 보면서 사용법을 알아보겠습니다.

for index, element in enumerate(people):
	print(index, '번째', '사람 이름은 ', element, '입니다')

위의 코드를 보시면 일반적인 for문의 모습과 약간 다른 부분이 있죠?

네, index라는 변수가 포함되어 있습니다. 이는 enumerate 함수에서 각각의 요소마다 포함된 인덱스 값을 가져오는 변수입니다.

그러니까 이 index 안에 반복할 때마다 인덱스 값이 담기는 거죠.

주의할 점은 이 index의 값은 1이 아니라 0부터 시작합니다.

 

문법을 정리하면 아래와 같습니다.

  • element 앞에 index 변수를 추가한 후 컴마로 구분해줍니다. 그러면 for문을 반복할 때마다 인덱스 값을 추출할 수 있다.

 

enumerate 함수 3번째 사용법

방금 enumerate 2번째 사용법을 통해 for문을 반복할 때마다 인덱스 값을 추출할 수 있다는 것을 이해하셨을 겁니다.

근데 한 가지 궁금한 점은 이 인덱스 값을 1부터 시작해서 반복하게 할 순 없을까? 궁금하실 텐 데요. 바로 파이썬 코드로 알려드리겠습니다.

for index, element in enumerate(people, starts=1):
	print(index, '번째', '사람 이름은 ', element, '입니다')

위의 코드처럼 enumerate 함수의 2번째 인자에 starts=1 을 넣어주면 인덱스 값이 0이 아니라 1부터 추출이 됩니다. 물론 1뿐만 아니라 다른 어떤 숫자로도 인덱스 값을 시작할 수 있으니 참고해 주세요. 보통은 인덱스 값을 0 또는 1부터 시작해서 1을 적어 놨습니다.

enumerate 함수 예제

enumerate 함수를 실제로 사용하는 예시들이 궁금하실 텐 데요. 몇 가지 사례들을 알아보면서 enumerate 함수를 어떤 식으로 사용 할지 더 감을 잡아보겠습니다.

 

#1 for문을 돌면서 리스트의 요소와 인덱스 값 둘 다 출력하는 예제

animal = ["lion", "dog", "cat"]
for index, animal in enumerate(animal, starts=1)
	print(index, animal)

간단한 코드 설명

1번째 줄: animal이라는 리스트 만듬

2번째 줄: index로 인덱스를 가져오고, animal 변수로 for문의 각 반복마다의 요소를 가져온다. enumerate 함수의 1번째 인자에 리스트를 전달했고, 2번째 인자에 인덱스가 1부터 시작하도록 설정했다.

3번째 줄: for문을 반복할 때마다 인덱스 값과 요소의 값이 출력되는 코드다

출력 값 ▼

1 lion
2 dog
3 cat

#2 for문을 돌면서 문자열의 각 문자와 인덱스 값 출력하는 예제

text = "abcdefg"
for index, char in enumerate(text ):
    print(index, char)

출력 값 ▼

0 a
1 b
2 c
3 d
4 e
5 f
6 g

 

#3 리스트 컴프리헨션과 함께 사용하는 예제


numbers = [1, 2, 3, 4, 5]
squared = [num**2 for index, num in enumerate(numbers)]
print(squared)

[1, 4, 9, 16, 25]

 

#4 딕셔너리로 변환하는 예제


fruits = ['apple', 'banana', 'orange']
fruit_dict = {index: fruit for index, fruit in enumerate(fruits)}
print(fruit_dict)

{0: 'apple', 1: 'banana', 2: 'orange'}