파이썬에서 슬라이싱할 때 주의할 점

파이썬에서 슬라이싱할 때 주의할 점

설명

파이썬에서 문자열, 리스트 등을 인덱싱할 때 마지막 인덱스를 초과하는 인덱스를 입력할 시 아래와 같이 오류가 난다.

>>> list = [0, 1, 2, 3]

>>> list[4]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range

>>> string = 'abcde'

>>> string[5]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: string index out of range

하지만 슬라이싱을 하면 오류가 나지 않고 빈 리스트를 리턴한다. 이 결과는 Numpy 배열, Tensorflow나 PyTorch의 텐서의 경우에도 마찬가지이다.

>>> list[5:7]
[]

>>> string[8:11]
''

왜 이렇게 구현되어있는지, 이걸 어떻게 응용하는지는 모르겠다. 다만 이 사실을 모르고 있으면 나처럼 버그 잡는데 엄청난 시간을 날려먹을지도 모르니 알아두자.

환경

댓글