[Python] Range, Enumerate
- Python/기초
- 2021. 3. 17.
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를 쓰면 됩니다.
자신에게 맞게 쓰시면 될것 같네요.
이상으로 포스팅을 마치겠습니다.
'Python > 기초' 카테고리의 다른 글
문자열 포맷 출력 (0) | 2021.03.31 |
---|---|
딕셔너리 key 변경하기 (0) | 2021.03.27 |
[Python]폴더 안에 파일 이름 목록 가져오기 (0) | 2021.03.14 |
Jupyter notebook 기본폴더 변경해서 시작 (0) | 2021.03.12 |
[Python] 시스템 종료하기(shutdown) (0) | 2021.03.07 |