Python
enumerate 함수란?
enumerate
는 '열거하다, 나열하다'는 뜻
- enumerate bits of information이라고 하면 단편적인 정보를 나열한다는 뜻으로 나열해서 번호를 매겨준다는 의미 정도
enumerate
는 반복문에서 사용할 수 있는 함수
- 반복문을 사용할 때 리스트의 순서값, 즉 인덱스의 정보가 필요한 경우가 있는데
enumerate
함수는 리스트의 원소에 순서값을 부여
- 이 함수를 사용하면 반복문 사용시 인덱스 번호를 얻을 수 있음
- 예를 들어 리스트를 인덱스 별로
for문
을 돌리고 싶을 때 유용
사용 방법
- 반복문을 사용할 때 리스트의 인덱스가 필요하면 아래와 같이 가능
a = [1, 2, 3]
for i in range(len(a)):
print(i)
enumerate
를 이용하면 리스트의 인덱스와 값을 튜플 형태로 반환
- 딕셔너리 자료형을
enumerate
함수를 이용해서 for문
을 돌리면 인덱스와 키값을 튜플로 반환
for i in enumerate(a):
print(i)
>>> (0, 1)
>>> (1, 2)
>>> (2, 3)
range 보다는 enumerate 를 사용하는 이유
range를 사용했을 때
range
함수는 range(시작 숫자, 종료 숫자, step)
의 형태로 사용
range
의 결과는 시작 숫자 이상 ~ 종료 숫자 미만의 컬렉션을 생성
- 사용할 때 시작 숫자와 step은 생략 가능
range
는 len
함수와 같이 사용
range
는 정수 범위를 지정하여 순회할 수 있지만 list
와 같은 자료구조를 순회할때는 len
을 통해 그 자료구조의 길이 만큼 순회해야 하므로 아래와 같이 사용해야 함
fruits = ['apple', 'grape', 'banana']
for i in range(len(fruits)):
print(i)
- 리스트와 같은 자료 구조의 각 원소에 접근하기 위해서는 아래와 같이 직접 인덱스로 접근해야 함
fruits = ['apple', 'grape', 'banana']
for i in range(len(fruits)):
print(fruits[i])
enumerate를 사용했을 때
- 반복문 사용 시 몇번째인지 확인이 필요한 경우 사용
- 인덱스 번호와 컬렉션의 원소를 튜플 형태로 함께 반환해줌
range
를 사용함으로서 발생하는 이 두 가지 문제를 enumerate
를 사용하여 한 번에 해결할 수 있음
fruits = ['apple', 'grape', 'banana']
for idx, fruit in enumerate(fruits):
print('{}: {}'.format(idx, fruit))
>>> 0: apple
>>> 1: grape
>>> 2: banana
enumerate
는 시작할 숫자를 지정해줄 수 있음
fruits = ['apple', 'grape', 'banana']
for idx, fruit in enumerate(fruits, 1):
print('{}: {}'.format(idx, fruit))
>>> 1: apple
>>> 2: grape
>>> 3: banana