On Fri, Mar 19, 2021 at 3:18 PM Cameron Simpson firstname.lastname@example.org wrote:
On Fri, Mar 19, 2021 at 10:46 AM Cameron Simpson email@example.com wrote:
I know that range(start,end,stride) will produce what I'd want from iter(slice(start,end,stride)), but wouldn't it be reasonable for a slice itself to be iterable? [...]
On Thu, Mar 18, 2021 at 6:09 PM Chris Angelico firstname.lastname@example.org wrote:
What if the start is positive and the end is negative? What values should i get?
On 18Mar2021 19:15, Caleb Donovick email@example.com wrote:
Or perhaps more problematic what happens if only stride is specified?
I'd be happy if the behaviour were the same as range(), yea even to being a concise way to spell range(slice.start,slice.end,slide.stride); who wants to say that if iter(slice) means the same thing?
For only stride, ValueError. For positive stride and start > end, empty iteration.
Have you considered range(*slice.indices(len)) ? You need to provide a length in order for negative or omitted endpoints to make sense, but otherwise it's the same idea.
But it's difficult to do that within iteration protocol, as there's no way to provide that all-important length.