본문 바로가기

python/파이썬 효율적으로 코딩하기

색인을 순환하는 대신 enumerate 사용하기

C에서 파생된 언어를 사용하는 개발자들은 목록이나 다른 데이터 구조를 순환할 때 대부분 색인 요소를 사용하는 경향이 있다. 하지만 이것은 일반적으로 파이썬답지 않은 순환 방법에 해당한다. 

아래와 같은 코드는 일반적으로 코드의 악취로 간주된다.

for i in range(len(items)):
	process(i, i[i])

 

순환안에서 색인 위치를 전혀 사용할 필요가 없는데도 불구하고 색인을 사용하는 것은 좋은 방법이 아니다. 더 관용적인 사용 방식은 아래와 같이 단순하다.

for i in items:
	process(None, item)

 

색인과 그에 연결된 항목을 모두 사용하는 경우가 비교적 흔한데, 이 경우 enumerate 함수를 사용하는 것이 훨씬 관용적이고 직관적이다.

for i, idx in enumerate(items):
	process(i, idx)

 

반대로 항목 자체는 필요하지 않으나 색인이 필요한 경우가 있다. 이 경우 '사용하지 않는 값' 을 의미하는 _ 를 사용한다.

for i, _ in enumerate(items):
	process(i, None)