Stats & AI tech blog - '일단 시도함'

[Python] enumerate() 함수로 for loop문 작성 본문

Programming/Python

[Python] enumerate() 함수로 for loop문 작성

justdoit ok? 2024. 4. 9. 11:15

오늘은 파이썬의 enumerate()함수를 사용해서 for loop문을 작성하는 방법에 대해 알아보겠다.
for문을 작성하는 방식은 사람마다 다를 수 있는데, 어떤 방식들이 있는지, 그 중 가장 파이썬스러운 방식은 무엇인지 확인해보려고 한다.


 

1. for 문

먼저 인덱스 i를 0으로 초기화 시킨 후에 루프마다 1을 더해 간다. 이런 방식은 루프문이 종료된 후에도 i가 그대로 남아있다는 단점이 있다

i=0
for letter in ['A','B','C']:
	print(i, letter)
    i+=1



2. range(), len() 함수 사용

두 번째로는 range()와 len()함수를 이용하는 방법이다. 먼저 iteration할 목록를 정의해놓고 목록의 length를 인덱스 range로 사용하는 방식으로, 많이 사용되는 방식이지만 파이썬스러운 코드는 아니라고 한다.

letters = ['A','B','C']
for i in range(len(letters)):
	letter = letters[i]
    print(i, letter)

 

 
3. enumerate() 함수 사용 

마지막으로 enumerate() 함수를 이용하는 코드이다. 
enumerate() 함수는 목록을 (인덱스, 원소)로 이루어진 튜플(tuple) 형식으로 바꿔준다.

for entry in enumerate(['A','B','C']):
	print(entry)

 
위 함수 결과는 (0, 'A') (1, 'B') (2, 'C') 로 튜플 형식으로 출력된다.
인덱스랑 원소를 따로 처리하고 싶다면 아래 코드 처럼 인자 풀기(unpacking)을 해주면 된다.

for i, letter in enumerate(['A','B','C']):
	print(i, letter)

 
unpacking 해주면 결과는 아래와 같이 인덱스 따로, 원소 따로 변수에 할당되어 출력되는 것을 확인할 수 있다.

0 A
1 B
2 C

 
enumerate() 함수를 사용하면 인덱스를 따로 다룰 때 보다 코드가 간단해지고 오타 실수를 줄일 수 있다는 장점이 있다.
 
 
 
 
* Reference
 - https://www.daleseo.com/python-enumerate/