파이썬 enumerate() 마스터하기: 리스트, 튜플, 문자열, 딕셔너리 인덱스와 함께 루프
파이썬 enumerate() 마스터하기: 리스트, 튜플, 문자열, 딕셔너리 인덱스와 함께 루프
파이썬 enumerate란?
enumerate()는 모든 이터러블에 카운터를 추가해 (index, value) 튜플의 이터레이터를 반환하는 파이썬 내장 함수입니다. 공식 파이썬 문서에 따르면, 반복 중 위치와 요소를 동시에 접근하는 간결하고 효율적인 방법을 제공합니다.
핵심 요약
enumerate() 문법과 매개변수 이해.
- 사용자 지정 시작 인덱스 설정법.
- 리스트, 튜플, 문자열, 딕셔너리에
enumerate() 적용.
- 수동 인덱싱 대비 성능 이점 인식.
문법
enumerate(iterable, start=0)
매개변수
iterable: 반복을 지원하는 모든 객체.
start (선택): 카운터 초기값. 기본값 0.
반환값
(index, element) 쌍을 산출하는 이터레이터. index는 start에서 시작해 요소마다 1씩 증가.
enumerate() 기본 예제
리스트 my_list를 enumerate()에 전달하고 결과를 리스트로 변환해 표시:
my_list = ['A', 'B', 'C', 'D']
print(list(enumerate(my_list)))
출력: [(0, 'A'), (1, 'B'), (2, 'C'), (3, 'D')]
사용자 지정 시작 인덱스
start 인자로 번호 체계 변경:
my_list = ['A', 'B', 'C', 'D']
print(list(enumerate(my_list, 2)))
출력: [(2, 'A'), (3, 'B'), (4, 'C'), (5, 'D')]
enumerate()로 루프 돌기
for 루프 안에서 enumerate() 사용하면 별도 카운터 변수 없이 깔끔:
my_list = ['A', 'B', 'C', 'D']
for index, value in enumerate(my_list):
print(index, value)
print("---")
for index, value in enumerate(my_list, 10):
print(index, value)
출력:
0 A / 1 B / 2 C / 3 D / --- / 10 A / 11 B / 12 C / 13 D
튜플 열거
튜플에도 동일 패턴 적용:
my_tuple = ('A', 'B', 'C', 'D', 'E')
for index, value in enumerate(my_tuple):
print(index, value)
출력: 0 A / 1 B / 2 C / 3 D / 4 E
문자열 열거
문자열도 파이썬에서 이터러블이므로 enumerate()로 각 문자 위치 확인:
my_str = "Guru99"
for index, char in enumerate(my_str):
print(index, char)
출력: 0 G / 1 u / 2 r / 3 u / 4 9 / 5 9
딕셔너리 열거
딕셔너리를 enumerate()에 전달하면 키를 순회:
my_dict = {"a": "PHP", "b": "JAVA", "c": "PYTHON", "d": "NODEJS"}
for index, key in enumerate(my_dict):
print(index, key)
출력: 0 a / 1 b / 2 c / 3 d
왜 enumerate()를 쓰는가?
- 인덱스와 값을 단일, 가독성 좋은 표현식으로 제공.
- 루프 안에서
list.index() 호출은 매번 O(n) 검색 수행하지만, enumerate()는 반복당 O(1)로 대용량 컬렉션에서 성능 향상.
- 보일러플레이트 코드 감소로 유지보수성 향상, 버그 감소.
요약
enumerate()는 인덱스와 이터러블 요소를 짝지어주는 파이썬 핵심 기능.
- 선택적
start 매개변수로 번호 체계 커스터마이징 가능.
- 리스트, 튜플, 문자열, 딕셔너리 및 모든 이터러블에 적용 가능.
- 인덱스 인식 루프에 단일 패스, 효율적 솔루션 제공.
- 최신 사용법은 공식 문서 참조.