s[7:9]
returns a 2-item sequence of elements 7 and 8. This works pretty much like any other half-open interval, in which one side (the 7) is included and the other (the 9) excluded. The resulting length is simply the difference between the end and start indexes, 9-7=2.What about backward? If you reverse the numbers and add a stride value,
s[9:7:-1]
gives you elements 9 and 8. Since the interval is still half-open, now 9 is on the closed end and included, and 7 is open and excluded. So s[8:6:-1]
is the reverse of s[7:9]
. You're getting two elements, starting at 8 and ending before 6, going backwards.What happens if you want to get the reverse of
s[0:5]
? The above math would suggest s[4:-1:-1]
but negative indexes are way at the other end of the sequence, so this produces an empty result. The correct answer is actually omitting the end index, as in s[4::-1]
. That invokes the regular "all items remaining in sequence" meaning, that is also used in s[9:]
.
No comments:
Post a Comment