[17] Prefer enumerate over range

2026. 3. 17. 10:57·EffectivePython_125
반응형

range보다는 enumerate를 사용하라고 한다. 

파이썬의 range 내장 함수는 정수 시퀀스를 순회하는 루프를 만들 때 아주 유용하다. 실제로 지금까지 많이 써오기도 했다. 

하지만 리스트의 위치에 대한 오프셋을 생성하는 경우를 살펴보도록 하자. 

다음은 가장 좋아하는 아이스크림 맛의 순위를 출력하는 코드를 range로 작성한 것이다. 

flavor_list = ["vanilla", "chocolate", "pecan", "strawberry"]

for i in range(len(flavor_list)):
    flavor = flavor_list[i]
    print(f"{i + 1}: {flavor}")

물론 코드는 잘 작동하지만, 리스트의 길이를 알아낸 후 배열에 인덱스로 접근하여 값을 가져오는 과정이 필요하다. 

 

그렇다면 좀 더 파이써닉한 enumerate를 사용하면??

for i, flavor in enumerate(flavor_list):
    print(f"{i + 1}: {flavor}")

enumerate는 지연 제너레이터(lazy generator)로 어떤 이터레이터(iterator)든 감싸서, 루프 인덱스와 이터레이터의 다음 값을 쌍으로 넘겨준다. 

또한, enumerate는 카운트를 시작할 숫자를 지정할 수 있는 기능을 두 번째 파라미터로 제공하기도 하니 참고하면 좋다. 

# 1부터 카운트를 시작하도록 설정
for i, flavor in enumerate(flavor_list, 1):
    print(f"{i}: {flavor}")
반응형

'EffectivePython_125' 카테고리의 다른 글

[19] Avoid else Blocks After for and while Loops  (3) 2026.03.19
[18] Use zip to Process Iterators in Parallel  (3) 2026.03.18
[16] Prefer Catch-All Unpacking over Slicing  (2) 2026.03.11
[15] Avoid Striding and Slicing in a Single Expression  (3) 2026.03.10
[14] Know How to Slice Sequences  (3) 2026.03.09
'EffectivePython_125' 카테고리의 다른 글
  • [19] Avoid else Blocks After for and while Loops
  • [18] Use zip to Process Iterators in Parallel
  • [16] Prefer Catch-All Unpacking over Slicing
  • [15] Avoid Striding and Slicing in a Single Expression
AglioOglio
AglioOglio
데이터분석, 딥러닝 공부하고 있습니다.
  • AglioOglio
    It것저것
    AglioOglio
  • 전체
    오늘
    어제
    • 분류 전체보기 (98)
      • Stanford CS224N Lectures (10)
        • 강의정리 (8)
        • assignment (2)
      • 논문리뷰 (1)
        • NLP (11)
        • CV (1)
      • 구현 (3)
      • DL (10)
        • CV (1)
        • NLP (9)
      • 딥러닝 기초 (3)
      • 파이토치 기초 (5)
      • 알고리즘 (30)
        • BOJ (30)
      • 시계열분석(Time Series Analysis) (1)
      • ML (0)
      • EffectivePython_125 (20)
      • 이것저것 (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    CS224N
    attention
    125
    자연어처리
    Transformer
    Stanford
    딥러닝
    harvard nlp
    논문리뷰
    effective python 125
    Python
    pytorch
    파이썬
    RNN
    Baekjoon
    백준
    effective python
    NLP
    word2vec
    Effective
  • 최근 댓글

  • 최근 글

  • 반응형
  • hELLO· Designed By정상우.v4.10.3
AglioOglio
[17] Prefer enumerate over range
상단으로

티스토리툴바