logo

Pythonでスライシングする際の注意点 📂プログラミング

Pythonでスライシングする際の注意点

説明

Pythonで文字列やリストなどをインデックスするとき、最後のインデックスを超えるインデックスを入力すると、以下のようなエラーが出る。

>>> 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]
''

なぜこのように実装されているのか、どう使うのかは分からない。ただ、この事実を知らなければ、私のようにバグ取りに膨大な時間を無駄にするかもしれないので、覚えておくといい。

環境

  • OS: Windows10
  • バージョン: Python 3.9.2