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