[issue29352] provide the authorative source for s[i:j] negative slice indices (<-len(s)) behavior for standard sequences
Akira Li
report at bugs.python.org
Mon Jan 23 11:49:16 EST 2017
New submission from Akira Li:
I've failed to find where the behavior for negative indices in s[i:j]
expression (i, j < -len(s)) for standard sequences (str, list, etc) is
formally defined.
The observed behavior implemented in PySlice_GetIndicesEx(): If "len(s)
+ i" or "len(s) + j" is negative, use 0. [1] I don't see it in the docs.
if (*start < 0) *start += length;
if (*start < 0) *start = (*step < 0) ? -1 : 0;
...
if (*stop < 0) *stop += length;
if (*stop < 0) *stop = (*step < 0) ? -1 : 0;
The tutorial mentions [2]:
> out of range slice indexes are handled gracefully when used for
> slicing"
slice.indices() documentation says [3]:
> Missing or out-of-bounds indices are handled in a manner consistent
> with regular slices.
Neither define it explicitly.
The behavior for the upper boundary is defined explicitly [4]:
> If *i* or *j* is greater than ``len(s)``, use ``len(s)``
I've added the documentation patch that defines the behavior for the
lower boundary too.
[1] Objects/sliceobject.c
[2] Doc/tutorial/introduction.rst
[3] Doc/reference/datamodel.rst
[4] Doc/library/stdtypes.rst
----------
assignee: docs at python
components: Documentation
files: docs-negative-slice-indices.patch
keywords: patch
messages: 286098
nosy: akira, docs at python
priority: normal
severity: normal
status: open
title: provide the authorative source for s[i:j] negative slice indices (<-len(s)) behavior for standard sequences
versions: Python 3.5, Python 3.6, Python 3.7
Added file: http://bugs.python.org/file46393/docs-negative-slice-indices.patch
_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue29352>
_______________________________________
More information about the Python-bugs-list
mailing list