Enumerate

1. enumerate

  • enumerate()는 ‘열거하다’라는 뜻의 함수로, 순서가 있는 자료형(list, set, tuple 등)을 인덱스를 포함한 enumerate 객체로 리턴한다. 사용법은 다음과 같다.

      >>> a = [1, 2, 3, 2, 45, 2, 5]
    
      >>> a
      [1, 2, 3, 2, 45, 2, 5]
    
      >>> enumerate(a)
      <enumerate object at 0x1010f83f0>
    
      >>> list(enumerate(a))
      [(0, 1), (1, 2), (2, 3), (3, 2), (4, 45), (5, 2), (6, 5)]
    

    이처럼 list()로 결과를 추출할 수 있는데, 인덱스를 자동으로 부여해주기 때문에 매우 편리하게 사용할 수 있다.

    그렇다면 a = [‘a1’, ‘b2’, ‘c3’]가 있을 때 이 리스트의 인덱스와 값을 함께 출력하려면 어떻게 해야 할까?

      for i in range(len(a)):
          print(i, a[i])
    


    먼저 위 코드와 같은 형태를 생각할 수 있지만, 값을 가져오기 위해 불필요한 a[i] 조회 작업과 전체 길이를 조회하여 루프를 처리하는 형태가 깔끔해 보이지않는다. 굳이 range()를 사용하지 않고 구현하고 싶다면


      i = 0
      for v in a:
          print(i, v)
          i += 1
    

    위 코드는 값을 깔끔하게 처리하긴 했지만 인덱스를 위한 변수를 별도로 관리하는 형태라 이 또한 깔끔하지 않다. 가장 깔끔한 방식은 다음과 같이 enumerate()를 활용하는 방법이다.

      for i, v in enumerate(a):
          print(i, v)
    

업데이트:

댓글남기기