레인지(range)는 연속된 수 또는 일정 간격으로 연속된 수 즉, 등차수열을 나열할 때 사용한다.
레인지를 이용하면 이런 등차수열을 최솟값과 최댓값만으로 표현할 수 있다. ‘range’라는 용어는 최솟값과 최댓값의 차이를 뜻하는 통계학 용어에서 따온 것이다.
range() 함수에서는 지정하는 매개변수의 수에 따라서 생성되는 레인지는 다음과 같이 차이가 있다.
range(종료) : 0 부터 종료값에 이르기 전의 1씩 증가하는 등차수열 시퀀스를 생성한다.
range(시작, 종료) : 시작값부터 종료값에 이르기 전의 1씩 증가하는 등차수열 시퀀스를 생성한다.
range(시작, 종료, 간격) : 시작값부터, 종료값에 이르기 전의 간격만큼씩 증가하는 등차수열 시퀀스를 생성한다.
레인지는 list() 함수를 이용해 리스트로 변환할 수 있다.
>>> list(range(9)) # 0 이상, 9 미만의 1씩 증가하는 등차수열
[0, 1, 2, 3, 4, 5, 6, 7, 8]
>>> list(range(5, 12)) # 5 이상, 12 미만의 1씩 증가하는 등차수열
[5, 6, 7, 8, 9, 10, 11]
>>> list(range(0, 20, 2)) # 0 이상, 20 미만의 2씩 증가하는 등차수열
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
레인지는 요소를 필요한 시점에만 만들어낸다. 레인지의 내용을 확인하려면 list() 함수나 tuple() 함수로 감싸 레인지를 리스트나 튜플로 변환해주어야 한다.
레인지의 내용은 왜 바로 출력되지 않을까?
레인지는 요소를 계산하기 위한 규칙만 갖고 있고 요소 자체는 갖고 있지 못하기 때문이다. 레인지는 필요한 요소를 처음부터 미리 다 만들어두는 것이 아니라, 그 요소를 사용해야 하는 시점에 비로소 만들어낸다. 그 덕분에 ‘0 이상 1 경 미만의 모든 정수’와 같이 매우 넓은 범위의 구간을 정의하는 것도 가능하다. 하지만 이것을 리스트나 튜플로 변환할 때는 오류가 발생할 수도 있으니 주의해야 한다.
레인지는 요소를 직접 갖지 않으므로 요소를 수정하는 것도 당연히 불가능하다. 따라서 레인지는 불변 데이터다. 튜플과 마찬가지로 내용을 수정하는 것을 제외한 시퀀스 연산을 레인지에 적용할 수 있다.
레인지를 생성한 후 내용을 수정하고 싶다면, 레인지를 리스트로 변환한 후 수정하면 된다.
본 포스팅은 아래의 사이트를 참고하여 작성되었습니다.
연오의 파이썬 https://python.bakyeono.net/chapter-6.html