Disclaimer: I am not asking if the upper-bound stopargument of slice()and range() is exclusive or how to use these functions.
Calls to the rangeand slicefunctions, as well as the slice notation [start:stop] all refer to sets of integers.
range([start], stop[, step]) slice([start], stop[, step]) In all these, the stop integer is excluded.
I am wondering why the language is designed this way.
Is it to make stopequal to the number of elements in the represented integer set when start equals 0 or is omitted?
Is it to have:
for i in range(start, stop): look like the following C code?
for (i = start ; i < stop; i++) {
The documentation implies this has a few useful properties:
word[:2] # The first two characters word[2:] # Everything except the first two characters Here’s a useful invariant of slice operations:
s[:i] + s[i:]equalss.For non-negative indices, the length of a slice is the difference of the indices, if both are within bounds. For example, the length of
word[1:3]is2.
I think we can assume that the range functions act the same for consistency.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With