Update ref docs on slicing.
This commit is contained in:
parent
aeaa546d7e
commit
53de1902e7
|
@ -513,14 +513,10 @@ or list). Slicings may be used as expressions or as targets in assignment or
|
||||||
:keyword:`del` statements. The syntax for a slicing:
|
:keyword:`del` statements. The syntax for a slicing:
|
||||||
|
|
||||||
.. productionlist::
|
.. productionlist::
|
||||||
slicing: `simple_slicing` | `extended_slicing`
|
slicing: `primary` "[" `slice_list` "]"
|
||||||
simple_slicing: `primary` "[" `short_slice` "]"
|
|
||||||
extended_slicing: `primary` "[" `slice_list` "]"
|
|
||||||
slice_list: `slice_item` ("," `slice_item`)* [","]
|
slice_list: `slice_item` ("," `slice_item`)* [","]
|
||||||
slice_item: `expression` | `proper_slice`
|
slice_item: `expression` | `proper_slice`
|
||||||
proper_slice: `short_slice` | `long_slice`
|
proper_slice: [`lower_bound`] ":" [`upper_bound`] [ ":" [`stride`] ]
|
||||||
short_slice: [`lower_bound`] ":" [`upper_bound`]
|
|
||||||
long_slice: `short_slice` ":" [`stride`]
|
|
||||||
lower_bound: `expression`
|
lower_bound: `expression`
|
||||||
upper_bound: `expression`
|
upper_bound: `expression`
|
||||||
stride: `expression`
|
stride: `expression`
|
||||||
|
@ -530,36 +526,23 @@ expression list also looks like a slice list, so any subscription can be
|
||||||
interpreted as a slicing. Rather than further complicating the syntax, this is
|
interpreted as a slicing. Rather than further complicating the syntax, this is
|
||||||
disambiguated by defining that in this case the interpretation as a subscription
|
disambiguated by defining that in this case the interpretation as a subscription
|
||||||
takes priority over the interpretation as a slicing (this is the case if the
|
takes priority over the interpretation as a slicing (this is the case if the
|
||||||
slice list contains no proper slice). Similarly, when the slice list has
|
slice list contains no proper slice).
|
||||||
exactly one short slice and no trailing comma, the interpretation as a simple
|
|
||||||
slicing takes priority over that as an extended slicing.
|
|
||||||
|
|
||||||
.. XXX is the next paragraph stil correct?
|
|
||||||
|
|
||||||
The semantics for a simple slicing are as follows. The primary must evaluate to
|
|
||||||
a sequence object. The lower and upper bound expressions, if present, must
|
|
||||||
evaluate to plain integers; defaults are zero and the ``sys.maxint``,
|
|
||||||
respectively. If either bound is negative, the sequence's length is added to
|
|
||||||
it. The slicing now selects all items with index *k* such that ``i <= k < j``
|
|
||||||
where *i* and *j* are the specified lower and upper bounds. This may be an
|
|
||||||
empty sequence. It is not an error if *i* or *j* lie outside the range of valid
|
|
||||||
indexes (such items don't exist so they aren't selected).
|
|
||||||
|
|
||||||
.. index::
|
.. index::
|
||||||
single: start (slice object attribute)
|
single: start (slice object attribute)
|
||||||
single: stop (slice object attribute)
|
single: stop (slice object attribute)
|
||||||
single: step (slice object attribute)
|
single: step (slice object attribute)
|
||||||
|
|
||||||
The semantics for an extended slicing are as follows. The primary must evaluate
|
The semantics for a slicing are as follows. The primary must evaluate to a
|
||||||
to a mapping object, and it is indexed with a key that is constructed from the
|
mapping object, and it is indexed with a key that is constructed from the
|
||||||
slice list, as follows. If the slice list contains at least one comma, the key
|
slice list, as follows. If the slice list contains at least one comma, the
|
||||||
is a tuple containing the conversion of the slice items; otherwise, the
|
key is a tuple containing the conversion of the slice items; otherwise, the
|
||||||
conversion of the lone slice item is the key. The conversion of a slice item
|
conversion of the lone slice item is the key. The conversion of a slice
|
||||||
that is an expression is that expression. The conversion of a proper slice is a
|
item that is an expression is that expression. The conversion of a proper
|
||||||
slice object (see section :ref:`types`) whose :attr:`start`, :attr:`stop` and
|
slice is a slice object (see section :ref:`types`) whose :attr:`start`,
|
||||||
:attr:`step` attributes are the values of the expressions given as lower bound,
|
:attr:`stop` and :attr:`step` attributes are the values of the expressions
|
||||||
upper bound and stride, respectively, substituting ``None`` for missing
|
given as lower bound, upper bound and stride, respectively, substituting
|
||||||
expressions.
|
``None`` for missing expressions.
|
||||||
|
|
||||||
|
|
||||||
.. _calls:
|
.. _calls:
|
||||||
|
|
Loading…
Reference in New Issue