본문 바로가기

python

슬라이스와 범위 지정 시에 마지막 항목이 포함되지 않는 이유

파이썬에서 인덱스를 활용한 슬라이싱을 사용하는 경우 list[start:end] 같이 표현한다.
이 때, start 부분은 포함되지만 end 부분은 포함되지 않는다.

이에 대하여 네덜란드 컴퓨터 과학자 다익스트라는 다음과 같은 이유를 들었다.

 

  1. 범위의 맨 앞 혹은 맨 뒤 값은 반드시 포함해야 한다.
    • 우선 반드시 이상/미만 혹은 초과/이하 형태여야 한다.
    • 그래야 두 수의 차를 통해서 몇 개의 값이 들어있는지 직관적으로 알 수 있다.
    • 그럼 그 형태가 왜 꼭 이상/미만이어야 하는가?
  1. 시작점이 포함되어야 하는 이유?
    • 만약 자연수의 범위를 표현하고자 할 때, 초과인 경우 최소 자연수인 1을 포함시키기 위해서 0초과 n이하으로 표현해야 한다.
    • 이 때, 자연수가 아닌 수를 통해서 자연수의 범위를 표현하는 부자연스러운 상황이 발생한다.
  1. 그렇다면 마지막 값이 포함되지 않아야 하는 이유?
    • 만약 해당 범위의 값이 없는 경우를 표현하는 경우에 1 <= n <= 1 처럼 시작점이 포함된 상태에서 마지막 값이 포함되면 표현이 불가능하다.

'python' 카테고리의 다른 글

Architecture Patterns with Python(1장)  (0) 2021.10.09
Fluent Python (챕터 2)  (0) 2021.10.07
Fluent Python (챕터1)  (0) 2021.10.06
ChainMap  (0) 2021.05.07
array 로 생성, 저장, 로딩  (0) 2021.05.02