관리 메뉴

개발이야기

[ Python Skill ] range 대신 enumerate를 써야하는 이유 본문

Python /Python Skill

[ Python Skill ] range 대신 enumerate를 써야하는 이유

안성주지몬 2019. 8. 8. 00:00

Python에서 iterable한 자료구조를 for문을 통해 순회할때 주로 range와 enumerate 두 가지를 사용합니다.

이번 포스팅에서는 range 보다 enumerate를 써야하는 이유에 대해 살펴보겠습니다.

 

1. range는 len함수와 같이 사용해야한다. 

range는 정수 범위를 지정하여 순회할 수 있지만 list와 같은 자료구조를 순회할때는 len을 통해 그 자료구조의 길이 만큼 순회해야 하므로 아래와 같이 사용해야 합니다.

 

fruits = ['apple', 'grape', 'banana']
for i in range(len(fruits)):

 

2. 리스트와 같은 자료구조의 인덱스에 접근해야 한다. 

또한 range를 사용한다면 각 자료구조의 인덱스로 각각의 원소에 접근할 수 있다는 점입니다. 

 

위에 나온 for문에서 fruits 의 각 원소에 접근하기 위해서는 아래와 같이 직접 인덱스로 접근해야 합니다.

 

fruits = ['apple', 'grape', 'banana']
for i in range(len(fruits)):
    print(fruits[i])

 

- enumerate

range를 사용함으로서 발생하는 이 두 가지 파이토닉하지 못한 문제를 'enumerate'를 사용하여 한 번에 해결할 수 있습니다.

 

fruits = ['apple', 'grape', 'banana']
for idx, fruit in enumerate(fruits):
    print('{}: {}'.format(idx + 1, fruit))

<출력값>

1: apple
2: grape
3: banana

 

또한 enumerate는 시작할 숫자를 지정해줄수도 있습니다.

 

fruits = ['apple', 'grape', 'banana']
for idx, fruit in enumerate(fruits, 1):
    print('{}: {}'.format(idx, fruit))

<출력값>

1: apple 
2: grape 
3: banana

 

 

레퍼런스

[1]https://stackoverflow.com/questions/24150762/pythonic-range-vs-enumerate-in-python-for-loop?lq=1

 

Pythonic: range vs enumerate in python for loop

Could you please tell me why it is considered as "not pythonic" when I need the index and the value when looping over a list and use: a = [1,2,3] for i in range(len(a)): # i is the idx # a[i] ...

stackoverflow.com

[2] https://stackoverflow.com/questions/49006614/python-range-len-vs-enumerate

 

Python range len vs enumerate

I read from range(len(list)) or enumerate(list)? that using range(len(s)) is not very good way to write Python. How one can write for loops in alternative way if we do not need to loop len(s) times...

stackoverflow.com

 

Comments