[Python] Range, Enumerate

반응형
    반응형

    for 반복문에서 많이 쓰는 range와 enumerate 를 살펴보겠습니다.

    아주 간단합니다.

     

    Range

    range는 범위설정을 해주는 역할을 해줍니다.

    range(시작,종료,step) 형태로 쓸 수 있습니다. 리스트 슬라이싱과 비슷합니다.

    시작과  step은 생략가능하고 생략해서 쓰면 다음과 같이 출력됩니다.

    >>> range(5)
    range(0,5)

    알아서 시작,종료를 설정해 주기 때문에 처음부터 시작(0으로 시작)하면 시작을 굳이 안 쓰셔도 됩니다.

     

    step은 슬라이싱과 같은 방식입니다. range를 가지고 리스트를 만들어 보겠습니다.

    >>> list(range(5,21,3))
    [5,8,11,14,17,20]

    보시다시피 5에서 21까지의 숫자를 3칸씩 띄어서 출력하게 했습니다.

     

    for 문을 통해서 같은 방식으로 할 수 있습니다.

    >>> for i in range(5,21,3):
    	print(i)
    5
    8
    11
    14
    17
    20

     

    Enumerate

    Enumerate는 반복문을 하게 되면 내가 몇번째에 왔는지 알고 싶을 때가 있습니다. 그럴 때 표시를 위해 Enumerate를 씁니다. 그러니깐 출력할 때마다 인덱스가 붙게 됩니다. 애초에 Enumerate를 사용하면 튜플로 나가게 됩니다.

    >>> en_list = [1,3,5,7,9]
    >>> for i in enumerate(en_list):
    	print(i)
    (0,1)
    (1,3)
    (2,5)
    (3,7)
    (4,9)

    위와 같이 (index,value)로 튜플이 됩니다.

     

     

    주의할건 보통 리스트에 추가할 때 for문을 쓰게 되는데 enumerate를 쓰게 되면 튜플로 저장이 됩니다.

    튜플이 필요할 때도 있지만 단순히 value만을 추가하기 원한다면 value를 호출해서 넣거나 range를 쓰거나

    값이 2개니 2개로 변수를 나눠서 넣는 게 좋습니다.

     

    # enumerate로 다른 리스트에 넣기
    >>> en_list = [1,3,5,7,9]
    >>> add_list = []
    >>> for i in enumerate(en_list):
    	add_list.append(i)
    >>> add_list
    [(0, 1), (1, 3), (2, 5), (3, 7), (4, 9)]
    
    # value 값만 넣고 싶다면
    
    #1 리스트 원소 넣기
    >>> en_list = [1,3,5,7,9]
    >>> add_list
    >>> for i in en_list:
    	add_list.append(i)
    
    #2 리스트 원소를 인덱스로 출력해서 넣기(추천하진 않음)
    >>> en_list = [1,3,5,7,9]
    >>> add_list
    >>> for i in range(len(en_list)):
    	add_list.append(en_list[i])
        
    #3 변수를 나눠서 넣기
    >>> en_list = [1,3,5,7,9]
    >>> add_list
    >>> for index,value in enumerate(en_list):
    	add_list.append(value)
        

     

    range와 enumerate의 역할은 비슷합니다. 단지, 인덱스가 추가로 붙여지는지의 차이만 있습니다.

    인덱스가 필요하다면 enumerate를 필요없다면 range를 쓰면 됩니다. 

    자신에게 맞게 쓰시면 될것 같네요.

    이상으로 포스팅을 마치겠습니다.

     

     

    댓글

    Designed by JB FACTORY

    ....