Python/파이썬 기초

파이썬 enumerate 이용 인덱스 번호 동시 for문 순회

jimmy_AI 2022. 1. 19. 11:13
반응형

파이썬 인덱스, 값 동시 for문 순회 : enumerate 

파이썬에서 for문 순회 중에 인덱스의 번호를 같이 가져와 사용하고 싶은 경우

유용하게 사용 가능한 내장 함수인 enumerate의 원리와 사용 예제에

대해서 살펴보도록 하겠습니다.

 

파이썬 enumerate 원리

일반 리스트 순회와 enumerate를 이용한 for문 순회를 비교해보겠습니다.

list_a = ['a', 'b', 'c', 'd']

# 일반 리스트 순회 for문
for i in list_a:
    print(i)

# 출력 결과
a
b
c
d

리스트를 순회하는 경우 리스트의 각 원소인 a, b, c, d에만 순서대로 접근하게 됩니다.

 

# enumerate를 이용한 리스트 순회
for i in enumerate(list_a):
    print(i)

# 출력 결과
(0, 'a')
(1, 'b')
(2, 'c')
(3, 'd')

반면, enumerate를 이용한 경우는 각 차례에 (인덱스 번호, 원소) 쌍의 튜플 형태

값을 반환해주고 있는 상황을 살펴볼 수 있습니다.

 

이 점을 이용하여 인덱스 번호를 동시에 가져와 사용하는 것이 수월해집니다.

물론, 마찬가지 원리로 튜플, np.array 등 자료형에도 적용이 가능합니다.

 

 

파이썬 enumerate for문 예제

파이썬에서 for 뒤에 순회하는 변수를 2개로 지정이 가능한데 enumerate를 이용한 경우에는

첫 변수는 인덱스 번호, 두번째 변수는 원소를 가져와 반복문에 사용이 가능합니다.

# enumerate를 이용한 인덱스, 리스트 동시 순회
for idx, val in enumerate(list_a):
    print(idx, '인덱스의 원소는', val,'입니다.')

# 출력 결과
0 인덱스의 원소는 a 입니다.
1 인덱스의 원소는 b 입니다.
2 인덱스의 원소는 c 입니다.
3 인덱스의 원소는 d 입니다.

앞쪽 변수인 idx에는 인덱스 번호인 0, 1, 2, 3이,

뒤쪽 변수인 val에는 원소인 a, b, c, d가 순회 시에 반환되고 있는 것을 볼 수 있습니다.

 

 

파이썬 enumerate 1부터 시작, 시작 인덱스 지정

enumerate 내부에 start 인자에 값을 지정하여 시작 인덱스 번호를 바꿀 수 있습니다.

아래 예시는 인덱스 시작 번호를 0번에서 1번으로 바꾼 예시입니다.

# 시작 인덱스 번호 지정
for idx, val in enumerate(list_a, start = 1):
    print(idx, '번째의 원소는', val,'입니다.')

# 출력 결과
1 번째의 원소는 a 입니다.
2 번째의 원소는 b 입니다.
3 번째의 원소는 c 입니다.
4 번째의 원소는 d 입니다.

idx 변수에서 0, 1, 2, 3 대신 1, 2, 3, 4의 값을 반환해주고 있습니다.