[Python] Range, Enumerate

반응형
반응형

for 반복문에서 많이 쓰는 range와 enumerate 를 살펴보겠습니다.

아주 간단합니다.

 

Range

range는 범위설정을 해주는 역할을 해줍니다.

range(시작,종료,step) 형태로 쓸 수 있습니다. 리스트 슬라이싱과 비슷합니다.

시작과  step은 생략가능하고 생략해서 쓰면 다음과 같이 출력됩니다.

>>> range(5)
range(0,5)

알아서 시작,종료를 설정해 주기 때문에 처음부터 시작(0으로 시작)하면 시작을 굳이 안 쓰셔도 됩니다.

 

step은 슬라이싱과 같은 방식입니다. range를 가지고 리스트를 만들어 보겠습니다.

>>> list(range(5,21,3))
[5,8,11,14,17,20]

보시다시피 5에서 21까지의 숫자를 3칸씩 띄어서 출력하게 했습니다.

 

for 문을 통해서 같은 방식으로 할 수 있습니다.

>>> for i in range(5,21,3):
	print(i)
5
8
11
14
17
20

 

Enumerate

Enumerate는 반복문을 하게 되면 내가 몇번째에 왔는지 알고 싶을 때가 있습니다. 그럴 때 표시를 위해 Enumerate를 씁니다. 그러니깐 출력할 때마다 인덱스가 붙게 됩니다. 애초에 Enumerate를 사용하면 튜플로 나가게 됩니다.

>>> en_list = [1,3,5,7,9]
>>> for i in enumerate(en_list):
	print(i)
(0,1)
(1,3)
(2,5)
(3,7)
(4,9)

위와 같이 (index,value)로 튜플이 됩니다.

 

 

주의할건 보통 리스트에 추가할 때 for문을 쓰게 되는데 enumerate를 쓰게 되면 튜플로 저장이 됩니다.

튜플이 필요할 때도 있지만 단순히 value만을 추가하기 원한다면 value를 호출해서 넣거나 range를 쓰거나

값이 2개니 2개로 변수를 나눠서 넣는 게 좋습니다.

 

# enumerate로 다른 리스트에 넣기
>>> en_list = [1,3,5,7,9]
>>> add_list = []
>>> for i in enumerate(en_list):
	add_list.append(i)
>>> add_list
[(0, 1), (1, 3), (2, 5), (3, 7), (4, 9)]

# value 값만 넣고 싶다면

#1 리스트 원소 넣기
>>> en_list = [1,3,5,7,9]
>>> add_list
>>> for i in en_list:
	add_list.append(i)

#2 리스트 원소를 인덱스로 출력해서 넣기(추천하진 않음)
>>> en_list = [1,3,5,7,9]
>>> add_list
>>> for i in range(len(en_list)):
	add_list.append(en_list[i])
    
#3 변수를 나눠서 넣기
>>> en_list = [1,3,5,7,9]
>>> add_list
>>> for index,value in enumerate(en_list):
	add_list.append(value)
    

 

range와 enumerate의 역할은 비슷합니다. 단지, 인덱스가 추가로 붙여지는지의 차이만 있습니다.

인덱스가 필요하다면 enumerate를 필요없다면 range를 쓰면 됩니다. 

자신에게 맞게 쓰시면 될것 같네요.

이상으로 포스팅을 마치겠습니다.

 

 

Designed by JB FACTORY