enumerate에 대해 알아보자

enumerate는 해시 테이블을 만들어보는 과정에서 나왔던건데, 반복문 뺑뺑이 도는 역할을 한다. 근데 이제 for문 하면 빠질 수 없는 for i in 아무개 없이 할 수 있다.

import sys

text = sys.stdin.readline().rstrip()

for i in text:
    print(i)

텍스트를 입력받아서 한글자씩 출력하는 코드. for문은 이렇게 쓴다. 이건 직접 글자에 접근해서 print(i)로 출력했지만 보통은 for i in range(len(text))로 주고 print문을 작성하게 된다. 그거 말고도 가끔 그럴때 있잖음. 인덱스랑 같이 뽑고 싶잖아요? 그러면 어떻게 하냐…

import sys

text = sys.stdin.readline().rstrip()

j = 0
for i in text:
    print(j, i)
    j += 1

뭐 이렇게 하든가 range를 len(text)로 하고 뽑든가 함.

import sys

text = sys.stdin.readline().rstrip()

for i in enumerate(text):
    print(i)

enumerate는 이렇게 쓰면 된다. 그냥 이렇게만 하면 인덱스와 요소를 튜플로 반환한다. 위 예시에서는 글자를 입력받아서 출력하는거니까 인덱스-알파벳이 쌍으로 출력되는 것이다.

이렇게 튜플로 묶어서 출력되는데… 아 이거 안이뻐… 그러면

import sys

text = sys.stdin.readline().rstrip()

for i, j in enumerate(text):
    print(i,j)

for문에 변수 두 개 주면 된다. 그러면 튜플이 깔끔하게 언패킹 돼서 출력된다.

import sys

text = sys.stdin.readline().rstrip()

for i, j in enumerate(text, start=1):
    print(i,j)

start= 옵션으로 시작 번호를 지정할 수도 있다. 위 코드의 경우 언패킹과 시작 번호 지정이 둘 다 된 상태.