Indexing and Slicing
suggest changeSyntax
obj[start:stop:step]
slice(stop)
slice(start, stop[, step])
Parameters
obj
| The object that you want to extract a “sub-object” fromstart
| The index ofobj
that you want the sub-object to start from (keep in mind that Python is zero-indexed, meaning that the first item ofobj
has an index of0
). If omitted, defaults to0
stop
| The (non-inclusive) index ofobj
that you want the sub-object to end at. If omitted, defaults tolen(obj)
.step
| Allows you to select only everystep
item. If omitted, defaults to1
Remarks
You can unify the concept of slicing strings with that of slicing other sequences by viewing strings as an immutable collection of characters, with the caveat that a unicode character is represented by a string of length 1.
In mathematical notation you can consider slicing to use a half-open interval of [start, end)
, that is to say that the start is included but the end is not. The half-open nature of the interval has the advantage that len(x[:n])
= n
where len(x)
> =n
, while the interval being closed at the start has the advantage that x[n:n+1]
= [x[n]]
where x
is a list with len(x) >= n
, thus keeping consistency between indexing and slicing notation.
Found a mistake? Have a question or improvement idea?
Let me know.
Table Of Contents