こんにちは。
Python のリストのスライスで、第二引数が抜き出し末尾指定 (exclusive) ですが、何も指定しないとリスト自身の末尾(逆順の場合は先頭)を指定したことになります。代わりに None
を指定しても同じことになります。
>>> [i for i in range(3)[::]]
>>> [i for i in range(3)[:None:]]
[0, 1, 2]
>>> [i for i in range(3)[::-1]]
>>> [i for i in range(3)[:None:-1]]
[2, 1, 0]
例えば、下記で -1
を使うとエラーとなるので、代わりに None
を使う方法があります1。
>>> [range(3)[:i:-1][-1] for i in [1, 0, None]]
[2, 1, 0]
>>> [range(3)[:i:-1][-1] for i in [1, 0, -1]]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 1, in <listcomp>
IndexError: range object index out of range
-
None
による代用は不自然にも見えるので、-1
の使用を許して欲しい気がします。 ↩