Recent Posts
Stats & AI tech blog - '일단 시도함'
[Python] enumerate() 함수로 for loop문 작성 본문
오늘은 파이썬의 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/
'Programming > Python' 카테고리의 다른 글
[Python] PyTorch로 합성곱신경망(CNN) 모델 구축 (0) | 2024.04.11 |
---|---|
[Python] PyTorch로 심층신경망(DNN) 모델 구축 (0) | 2024.04.11 |
[Python] PyTorch에서 신경망 모델 파라미터 정의 (손실함수/옵티마이저/학습률 스케줄러) (0) | 2024.04.05 |
[Python] PyTorch에서 신경망 모델 정의 (0) | 2024.04.05 |
[Python] PyTorch 개요 및 아키텍처 (0) | 2024.04.04 |