[Python] Skill of coding - range보다는 enumerate를
range보다는 enumerate를 사용하자
내장함수 range는 정수 집합을 순회(iterate)하는 루프를 실행할 때 유용해요.
import random
random_bits = 0
for i in range(64):
if random.randint(0,1):
random_bits |= 1 << i
print(random_bits)
참고로 비트 연산자 or 그리고 왼쪽, 오른쪽으로 이동시키는 shift연산자임
7556132930322809579
문자열의 리스트 같은 순회할 자료 구조가 있을 때는 직접 루프를 실행할 수 있어요.
flavor_list = ['vanilla', 'chocolate', 'pecan', 'strawberry']
for flavor in flavor_list:
print('%s is delicious' % flavor)
vanilla is delicious
chocolate is delicious
pecan is delicious
strawberry is delicious
종종 리스트를 순회하거나 리스트의 현재 아이템의 인덱스를 알고 싶은 경우가 있느데요.
리스트를 순회하거나 리스트의 현재 아이템의 인덱스를 알고 싶은 경우가 있느데요.
예를들어 아스크림의 순위를 출력하고 싶다고 한다면 한가지 방법은 range를 사용하는거에요
for i in range(len(flavor_list)):
flavor = flavor_list[i]
print('%d: %s' % (i + 1, flavor))
1: vanilla
2: chocolate
3: pecan
4: strawberry
위의 코드는 투박해보이네요. 리스트의 길이를 알아야하고, 배열을 인덱스로 접근해야 하며, 읽기가 불편합니다.
파이썬은 이런 상황을 처리하려고 내장함수 enumerate를 제공했어요. enumerate는 지연 제너레이터로 이터레이터를 감싸요. 이 제너레이터는 이터레이터에서 루프 인덱스와 다음 값을 한 쌍으로 가져와 넘겨줘요. enumerate로 작성한 코드는 가독성이 좋아요.
```python
for i, flavor in enumerate(flavor_list):
print('%d: %s' % (i + 1, flavor))
1: vanilla
2: chocolate
3: pecan
4: strawberry
enumerate로 세기 시작할 숫자를 지정하면 코드는 더 짧아져요.
for i, flavor in enumerate(flavor_list, 1):
print('%d: %s' % (i, flavor))
1: vanilla
2: chocolate
3: pecan
4: strawberry
핵심 정리
- enumerate는 이터레이터를 순회하면서 이터레이터에서 각 아이템의 인덱스를 얻어오는 간결한 문법을 제공해요.
- range로 루프를 실행하고 시퀀스에 인덱스로 접근하기 보다는 enumerate를 사용하는게 좋아요
- enumerate에 두 번째 파라미터는 세기 시작할 숫자를 지정해요.(기본값은 0)
Author And Source
이 문제에 관하여([Python] Skill of coding - range보다는 enumerate를), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@hyeseong-dev/Python-Skill-of-coding-range보다는-enumerate를저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)