-
왜 파이썬은 0<= 숫자 인덱스 < n 을 사용할까?자료구조&알고리즘 2019. 1. 9. 10:28
출처 알고리즘 책 1권 52페이지
숫자 인덱스
- 대부분의 프로그래밍 언어에서 n개의 원소를 갖는 배열 a의 첫번째 원소는 a[0]이고, 마지막 원소는 a[n-1]입니다. 따라서 a의 인덱스 i의 범위는 0<= i < n 입니다.
- C++ STL에서는 반복자로 범위를 표현할 때 첫 원소를 가리키는 반복자와 마지막 원소 다음 위치를 가리키는 반복자를 사용합니다. 예를 들어, STL 자료구조에서 모든 원소를 갖는 범위는 begin(), end()로 표현하는데, begin()은 첫 번째 원소를 가리키지만 end()는 마지막 원소가 아니라 마지막 원소 다음에 있는 가상의 원소를 가리킵니다.
- 자바의 SortedSet 인터페이스는 범위를 fromElement와 toElement로 전달받는데, fromElement는 범위에 포함되지만 toElement는 포함되지 않습니다.
- 파이썬에서는 배열의 일부를 a[4:8]과 같은 문법으로 잘라낼 수 있는데, 이렇게 잘라내면 a[4] 부터 a[7]까지를 포함하는 부분 배열을 만들 수 있습니다.
위와 같은 인덱스 범위의 장점
이러한 선택에는 분명한 장점이 있습니다.
- 첫번째 값과 마지막 값이 같은 구간을 이용하면 텅 빈 구간을 쉽게 표현할 수 있습니다. [2, 2) 로 표현된 반 열린 구간은 2<= i <2 인 모든 i를 포함하므로 공집합이 됩니다.
- 두 구간이 연속해 있는지를 쉽게 알 수 있습니다. 두 구간 [a, b)와 [c, d)가 연속해있는지를 보려면 b=c혹은 a=d인지만 확인하면 됩니다.
- 구간의 크기를 쉽게 할 수 있습니다. [a, b)로 표현된 구간에 포함된 자연수의 수는 b-a가 됩니다.
출처
https://www.cs.utexas.edu/users/EWD/transcriptions/EWD08xx/EWD831.html
숫자 인덱스 범위를 0<=n <n으로 사용하는 이유
- 전체 숫자의 개수가 좌우 수를 뺀 값과 똑같다.
The observation that conventions a) and b) have the advantage that the difference between the bounds as mentioned equals the length of the subsequence is valid.
- 가장 작게 시작하는 숫자를 자연수가 아닌 수로 하면 보기에 좋지 않다/ 자연스럽지 않다.
Exclusion of the lower bound —as in b) and d)— forces for a subsequence starting at the smallest natural number the lower bound as mentioned into the realm of the unnatural numbers. That is ugly, so for the lower bound we prefer the ≤ as in a) and c).
- 상한선 숫자가 포함되면 전체 숫자 범위를 줄일 때 자연스럽지 않다.
inclusion of the upper bound would then force the latter to be unnatural by the time the sequence has shrunk to the empty one.
'자료구조&알고리즘' 카테고리의 다른 글
CS186 Introduction to Database systems (1강 - intro) (0) 2019.07.15 원격 데이터 베이스 구성하기 - 1 (가상머신 & OS설치) (4) 2019.07.10 알고리즘 스터디 8회- AWS EC2 instance start 코드 만들기 (0) 2019.01.03 윈도우 단축키 정리 (1) 2018.12.04 알고리즘 기초 유형 (0) 2018.10.06 댓글