How does Python’s slice notation (Slicing) work? That is: when I write code like a[x:y:z], a[:], a[::2] etc., how can I understand which elements end up in the slice?
Home/slice
Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
The syntax is: a[start:stop] # items start through stop-1 a[start:] # items start through the rest of the array a[:stop] # items from the beginning through stop-1 a[:] # a copy of the whole array There is also the step value, which can be used with any of the above: a[start:stop:step] # start througRead more
The syntax is:
There is also the
step
value, which can be used with any of the above:The key point to remember is that the
:stop
value represents the first value that is not in the selected slice. So, the difference betweenstop
andstart
is the number of elements selected (ifstep
is 1, the default).The other feature is that
start
orstop
may be a negative number, which means it counts from the end of the array instead of the beginning. So:Similarly,
step
may be a negative number:Python is kind to the programmer if there are fewer items than you ask for. For example, if you ask for
a[:-2]
anda
only contains one element, you get an empty list instead of an error. Sometimes you would prefer the error, so you have to be aware that this may happen.Relationship with the
slice
objectA
slice
object can represent a slicing operation, i.e.:is equivalent to:
Slice objects also behave slightly differently depending on the number of arguments, similar to
range()
, i.e. bothslice(stop)
andslice(start, stop[, step])
are supported. To skip specifying a given argument, one might useNone
, so that e.g.a[start:]
is equivalent toa[slice(start, None)]
ora[::-1]
is equivalent toa[slice(None, None, -1)]
.While the
See less:
-based notation is very helpful for simple slicing, the explicit use ofslice()
objects simplifies the programmatic generation of slicing.