Indeed, this is actually one reason why I like Python's closed-left, open-right syntax. It lets us sidestep the inclusive bound issue entirely, because, as noted in the post, for all 0 ≤ l ≤ r ≤ len(L) where L is a Python list,
L
== L[0:len(L)]
== L[0:l] + L[l:len(L)]
== L[0:l] + L[l:r] + L[r:len(L)]
I actually didn't like this syntax until I had to work this out. Now everyone else's approach seems silly to me.