파이썬 코딩을 더 깔끔하게! #7

Dunno·2021년 7월 4일
0

Better Way 7. range보다는 enumerate를 사용하라

range와 enumerate

range함수와 enumerate함수는 비슷하지만 enumerate이 값뿐만 아니라 인덱스까지 쌍으로 반환한다는 것이 특징이다.

  • range함수
    range 함수는 다음과 같이 value에만 접근하거나 인덱스에 접근하기 위해서는 리스트의 길이를 알아야 하고, 인덱스를 통해 배열 원소에 접근해야 하는 등 불편한 점이 많다.
flavor_list = ['바닐라', '초콜릿', '피칸', '딸기']
for flavor in flavor_list:
	print{f'{flavor} 맛있어요.')
    
>>>
바닐라 맛있어요.
초콜릿 맛있어요.
피칸 맛있어요.
딸기 맛있어요.

#----------------------------------------------------#

for i in range(len(flavor_list)):
	flavor = flavor_list[i]
    print(f'{i+1}: {flavor}')
          
>>>
1: 바닐라
2: 초콜릿
3: 피칸
4: 딸기
  • enumerate함수
    enumerate함수는 루프 인덱스와 이터레이터의 다음 값으로 이뤄진 쌍을 반환한다.
it = enumerate(flavor_list)
print(next(it))
print(next(it))

>>>
(0, '바닐라')
(1, '초콜릿')

또한 enumerate가 넘겨주는 각 쌍을 for문에서 간결하게 언패킹할 수 있다.

for i, flavor in enumerate(flavor_list):
	print(f'{i + 1}: {flavor}')

>>>
1: 바닐라
2: 초콜릿
3: 피칸
4: 딸기

enumerate는 두 번째 파라미터로 어디부터 수를 세기 시작할지 지정할 수 있다.

for i, flavor in enumerate(flavor_list, 1):
	print(f'{i}: {flavor}')

0개의 댓글