Seongwon Lim

[Python] enumerate() 함수 사용 방법 본문

Python

[Python] enumerate() 함수 사용 방법

limsw 2022. 7. 13. 15:33
반응형

서론

이번 글에서는 파이썬의 내장 함수인 enumerate 함수에 대한 개념을 알아보고 예제를 통해 사용 방법을 살펴보고자 한다.

enumerate 함수

해당 함수는 파이썬에서 반복문(for문)을 돌릴 때 인덱스 값을 출력해야 하는 경우에 유용하게 사용할 수 있는 함수이다.

 

enumerate 함수가 가지는 특징은 다음과 같다.

  • 리스트가 있는 경우, 순서(인덱스)와 리스트의 값을 전달하는 기능을 제공한다.
  • 해당 함수는 순서가 있는 자료형(list, set, tuple, dictionary, string)을 입력으로 받아 인덱스 값을 포함하는 enumerate 객체를 반환한다.
  • enumerate 함수는 for문에서 자주 사용된다.

예제를 통해 enumerate 함수를 사용하는 방법을 알아보자.

enumerate 함수 사용하지 않고 인덱스 값 출력하기

먼저, enumerate 함수를 사용하지 않고 리스트의 값과 인덱스 값을 출력하려면 어떻게 해야할까?

myList = ['A', 'B', 'C', 'D']
index = 0

for word in myList:
    print(index, word)
    index += 1
    
# 결과
0 A
1 B
2 C
3 D

이와 같이 인덱스를 함께 출력할 변수를 선언하여 값을 1씩 증가시키는 방법으로 구현할 수 있을 것이다.

 

또는 for문의 range() 함수를 이용한다면 다음과 같이 구현할 수 있을 것이다.

myList = ['A', 'B', 'C', 'D']

for i in range(len(myList)):
    print(i, myList[i])
    
# 결과
0 A
1 B
2 C
3 D

이번에는 enumerate 함수를 사용하여 인덱스와 리스트 값을 출력하는 방법을 알아보자.

enumerate 함수 사용하여 인덱스 값 출력하기

myList = ['A', 'B', 'C', 'D']

for data in enumerate(myList):
    print(data)

# 결과
(0, 'A')
(1, 'B')
(2, 'C')
(3, 'D')

enumerate 함수는 파이썬 내장 함수로 별도의 라이브러리를 호출하지 않고도 사용할 수 있다.

위와 같이 코드를 구성하면 enumerate 함수는 기본적으로 튜플(Tuple) 타입의 결과를 반환한다.

 

반환 데이터를 튜플 값이 아닌 인덱스, 리스트 값을 각각 반환하고 싶다면 다음과 같이 코드를 작성하면 된다.

myList = ['A', 'B', 'C', 'D']

for index, word in enumerate(myList):
    print(index, word)

# 결과
0 A
1 B
2 C
3 D

시작 인덱스 값 변경하기

지금까지 살펴본 enumerate 함수의 예제는 시작 인덱스가 0부터 시작했다.

그러나 enumerate 함수는 시작 인덱스 값을 사용자의 요구 사항에 맞게 설정할 수 있는 기능을 제공하고 있다.

 

사용 방법은 enumerate 함수의 두 번째 인자에 start='시작 인덱스 값'을 정의하면 된다. 예제를 통해 살펴보자.

myList = ['A', 'B', 'C', 'D']

for index, word in enumerate(myList, start=50):
    print(index, word)

# 결과
50 A
51 B
52 C
53 D

사용자가 정의한 값 50부터 차례대로 출력되는 것을 확인할 수 있다.

enumerate 함수 응용하기

1. enumerate 함수 안에는 sorted 함수와 같은 또 다른 함수를 정의할 수 있다.

myList = ['C', 'B', 'D', 'A']

for index, word in enumerate(sorted(myList)):
    print(index, word)

# 결과
0 A
1 B
2 C
3 D

2. 2차원 리스트의 행(row), 열(col) 값을 출력할 때에도 enumerate 함수를 활용할 수 있다.

 

3x3으로 구성된 2차원 배열이 있을 때의 예제를 살펴보자.

myList = [['A','B','C'], ['D','E','F'], ['G','H','I']]

for r, row in enumerate(myList):
    print(r, row)

# 결과
0 ['A', 'B', 'C']
1 ['D', 'E', 'F']
2 ['G', 'H', 'I']

먼저 위 코드처럼 구성하면 행(row)의 인덱스 값과 각 행에 들어있는 배열을 반환한다.

따라서 열(col)의 인덱스 값도 추출하고 싶다면 각 행에 해당하는 배열인 row 변수를 한번 더 enumerate 함수를 적용하면 된다.

myList = [['A','B','C'], ['D','E','F'], ['G','H','I']]

for r, row in enumerate(myList):
    for c, col in enumerate(row):
        print(r, c, col)

# 결과
0 0 A
0 1 B
0 2 C
1 0 D
1 1 E
1 2 F
2 0 G
2 1 H
2 2 I
Comments