흔한말 (collection)/Python

내장 함수 enumerate()

hnanmal 2022. 2. 3. 12:29
300x250

반복문을 사용할 때,
원소와 인덱스를 동시에 얻고 싶을 때가 있습니다.

가장 흔하게 떠올릴 수 있는 코드는 아래와 같습니다.

idx = 0
for element in ['AA', 'bb', 'Cc']:
    print(idx, element)
    idx += 1
...
0 AA
1 bb
2 Cc

 

그런데 이 방법은 반복문이 종료된 이후에도 idx 라는 변수를 남기게 되어 찝찝하다는 단점이 있습니다.

이럴때 쓰는 파이썬 내장함수가 바로 enumerate 입니다.

 

위의 코드에서 idx 변수를 지워버리고, 순회의 대상이 되는 목록을 enumerate 함수로 감싸버리면 됩니다.

for i in enumerate(['AA', 'bb', 'Cc']):
    print(i)
...
(0, 'AA')
(1, 'bb')
(2, 'Cc')

상기의 코드에서는 tuple로 인덱스와 원소가 결합되어 반환됩니다.

 

따라서 별도로 분리하여 활용하고자 한다면 하기와 같은 방식의 코드를 사용하면 됩니다.
tuple 로 반환되는 값을 unpacking 하는 것입니다.

for idx,element in enumerate(['AA', 'bb', 'Cc']):
    print(idx,element)
...
0 AA
1 bb
2 Cc

 

 

이렇게 인덱스와 원소를 동시에 얻은 뒤 추가적으로 활용하는 사례는 추후 흔한생각 카테고리에 포스팅할 예정입니다.

반응형