번역은 범위인데, 실제로는 "정수 범위"인 것 같습니다. 전공기초 수업 때 사용했던 교재에서도 그렇게 적혀 있네요. 다만 실제로 말할 때는 모두들 range라고 합니다.
아래는 공식 문서에서 설명하는 Range입니다.
The range type represents an immutable sequence of numbers and is commonly used for looping a specific number of times in for loops.
여기서 "보통 for 반복문에서 정해진 횟수만큼 반복할 때 사용한다"(is commonly used for looping a specific number of times in for loops)라고 되어있는데, 이 부분이 나름 중요한 부분인 것 같습니다. 실제로 굉장히 자주 쓰이기 때문입니다.
다만 여기에서 for 반복문을 알아보지는 않도록 하겠습니다.
이제부터 범위(range)에 대해 알아보도록 하겠습니다.
Range는 수정 불가능한 sequence입니다. 수의 범위와 증감 정도를 표현합니다.
Range를 표현하는 방법은 다음과 같습니다.
그런데 이렇게만 보면 이게 뭔가 싶을 겁니다...
리스트(list)에서 배웠던 list( ) 함수를 이용해서 보도록 하겠습니다.
각 의미를 살펴보면 다음과 같습니다.
슬라이싱할 때처럼 stop 전까지만 범위로 포함되는 걸 기억해주세요.
Range인 이유는 저장할 때 start, stop, step만 저장하고 필요에 따라 중간 항목을 계산을 하기 때문입니다.
as it only stores the start, stop and step values, calculating individual items and subranges as needed
생긴 것과 다르게 인덱싱과 슬라이싱이 가능합니다.
[02주차] Sequence types에서 봤던 것처럼 Range는 덧셈과 곱셈을 제외하고는 나머지 모든 sequence 공통 연산이 가능합니다.
r을 리스트(list)로 바꿔보면 알기 쉽습니다.
index가 5일 때 원소는 10인 것을 알 수 있습니다. (index는 0부터 시작합니다!)
index가 처음부터 5 전까지는 [0, 2, 4, 6, 8]인 것을 알 수 있습니다. step값은 원래와 같이 step = 2이고 r[:5]로 표현했으므로 동일한 start값(start = 0)인 range는 range(0, 10, 2)입니다.
그런데 사실 range를 인덱싱하고 슬라이싱할 일이 아마 많지는 않을 것 같아요...?