On 30 October 2013 09:52, Oscar Benjamin <oscar.j.benjamin@gmail.com> wrote:
Firstly would it not be better to add slice.__reversed__ so that it would be
b = a[reversed(slice(i, j))]
This won't work, because reversed returns an iterator, not a slice object.
Secondly I don't think I would ever actually want to use this over the existing possibilities.
Agreed, while my usage is pretty trivial, I would definitely use b = a[::-1] over b = a[Slice(None, None, None, reversed=True)] I could probably omit some of those None arguments, but I probably wouldn't simply because I can't remember which are optional.
There are real problems with slicing and indexing in Python that lead to corner cases and bugs but this particular issue is not one of them. The real problems, including the motivating example at the start of this thread, are caused by the use of negative indices to mean from the end.
However, being able to write last_n = s[-n:] is extremely useful. I'm losing track of what is being proposed here, but I do not want to have to write that as s[len(s)-n:]. Particularly if "s" is actually a longer variable name, or worse still a calculated value (which I do a lot). Paul