obj[start:stop:step]
slice(stop)
slice(start, stop[, step])
obj
| The object that you want to extract a “sub-object” fromstart
| The index of obj
that you want the sub-object to start from (keep in mind that Python is zero-indexed, meaning that the first item of obj
has an index of 0
). If omitted, defaults to 0
stop
| The (non-inclusive) index of obj
that you want the sub-object to end at. If omitted, defaults to len(obj)
. step
| Allows you to select only every step
item. If omitted, defaults to 1
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.