Eryk Sun added the comment:
This is documented behavior for the built-in sequence types [1], and it's also
mentioned in the tutorial [2].
The indices() method of a slice object shows the resolved bounds for given
sequence length:
>>> slice(-1000, 1000, 1).indices(4)
(0, 4, 1)
>>> slice(None, None, 1).indices(4)
(0, 4, 1)
>>> slice(1000, -1000, -1).indices(4)
(3, -1, -1)
>>> slice(None, None, -1).indices(4)
(3, -1, -1)
The rules apply the same to list, tuple, and range sequences:
>>> [1, 2, 3, 4][-1000:1000]
[1, 2, 3, 4]
>>> (1, 2, 3, 4)[-1000:1]
(1,)
>>> range(0)[-100:100]
range(0, 0)
[1]: https://docs.python.org/3/library/stdtypes.html#common-sequence-operations
[2]: https://docs.python.org/3/tutorial/introduction.html#strings
----------
nosy: +eryksun
resolution: -> not a bug
stage: -> resolved
status: open -> closed
_______________________________________
Python tracker <[email protected]>
<http://bugs.python.org/issue27479>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com