ABOUT ME

Today
Yesterday
Total
  • [Python] enumerate 함수 알아보기
    Python/파이썬 기초 2025. 3. 19. 11:12
    반응형

    enumerate 함수 알아보기


    파이썬(Python)에서 for 반복문을 시행할 때, 반복문은 반복 대상의 value를 반환해 줍니다. 예를 들어, ['a','b','c','d','e'] 라는 리스트를 반복의 대상으로 한다면 해당 반복문은 'a','b','c','d','e' 값을 차례대로 반환해 줍니다.

     

    그런데, 반복을 할 때마다 몇 번째 반복문인지를 함께 알아둬야 할 때가 있습니다. 이 때는 두 가지 방법을 이용해볼 수 있는데요, 우선은 몇 번째 반복문인지 따로 기록하는 방법을 시도해 보겠습니다.

     

     

    # 방안 1: 몇 번째 반복문인지 따로 기록하기
    ind = 0
    sample_list = ['a','b','c','d','e']
    
    for sample in sample_list:
        ind += 1
        print(f'{ind} 번째 반복문에서는 {sample} 가 반환됩니다.')
    1 번째 반복문에서는 a 가 반환됩니다.
    2 번째 반복문에서는 b 가 반환됩니다.
    3 번째 반복문에서는 c 가 반환됩니다.
    4 번째 반복문에서는 d 가 반환됩니다.
    5 번째 반복문에서는 e 가 반환됩니다.

     

     

    그런데, 이런 방법을 이용한다면 ind 라는 변수를 따로 관리해야 하는 불편함이 있습니다. 그뿐만아니라, ind += 1 코드를 잘못 적었을 경우, 실제 반복문이 몇 번째 진행되는지 제대로 확인할 수 없다는 문제점도 있지요. 그래서, enumerate 함수를 이용해서 위와 같은 코드를 작성해 보도록 하겠습니다.

     

     

    enumerate를 이용한 반복문


    # 방안 2: enumerate 함수를 이용하기
    for ind, sample in enumerate(sample_list):
        print(f'{ind+1} 번째 반복문에서는 {sample} 가 반환됩니다')
    1 번째 반복문에서는 a 가 반환됩니다
    2 번째 반복문에서는 b 가 반환됩니다
    3 번째 반복문에서는 c 가 반환됩니다
    4 번째 반복문에서는 d 가 반환됩니다
    5 번째 반복문에서는 e 가 반환됩니다

     

     

    파이썬의 enumerate 함수는 시퀀스, 이터레이터 등을 입력하면, 열거 객체를 돌려준다고 정의되어 있습니다. 하지만 이런 표현은 어렵기 때문에, 간단하게 정리하자면 아래와 같이 설명할 수 있습니다.

     

    • enumerate 함수에 인덱싱이 가능한 객체를 매개변수로 입력하면,
    • 카운트(0부터 시작하는 정수)와 값을 튜플로 묶어서 리턴해줍니다.

     

    그래서, 위 코드에서는 sample_list 의 카운트 번호(0부터 4까지의 숫자)와 값(a부터 e까지의 알파벳)을 차례대로 묶어서 튜플로 리턴해 주었지요. 그리고, 해당 튜플의 정보를 for 반복분에서 ind, sample 이라는 변수로 만들어서 이용했습니다.

     

     

    enumerate 함수의 반환값 알아보기


    list(enumerate(sample_list))
    [(0, 'a'), (1, 'b'), (2, 'c'), (3, 'd'), (4, 'e')]

     

     

    위 코드를 실행하면, enumerate 함수의 반환값이 어떻게 나오는지 확인할 수 있습니다. enumerate 함수는 튜플 형태로 인덱스 이름과 값을 차례대로 묶어서 리턴해 줍니다.

     

    하지만 딕셔너리와 같이 인덱스와 값을 모두 정의하는 객체라면, enumerate 함수를 실행한 결과가 리스트와는 다르게 반환되니 아래 코드를 참고해서 이해해 주세요.

     

     

    sample_dict = {'인덱스1':'값1', '인덱스2':'값2'}
    list(enumerate(sample_dict))
    [(0, '인덱스1'), (1, '인덱스2')]
    반응형

    댓글

문의: jwkang3929@naver.com