On 28 October 2013 21:06, Joshua Landau <joshua@landau.ws> wrote:
On 28 October 2013 17:15, Joshua Landau <joshua@landau.ws> wrote:
<suggested using "~" instead of "-">
# Here's a quick mock-up of my idea.
class NotSliced(list): ...
# And a minor bugfix and correction: class NotSliced(list): def __getitem__(self, itm): if isinstance(itm, slice): start, stop, step = itm.start, itm.stop, itm.step if step is None: step = 1 if start is None: start = ~0 if step < 0 else 0 if stop is None: stop = 0 if step < 0 else ~0 if start < 0: start += len(self) + 1 if stop < 0: stop += len(self) + 1 if step > 0: return NotSliced(super().__getitem__(slice(start, stop, step))) else: return NotSliced(super().__getitem__(slice(stop, start))[::step]) else: return super().__getitem__(itm) ns = NotSliced([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) # This came out wrong last time. I should be more careful... ns[~4:~0][::-1] ns[~0:~4:-1] #>>> [9, 8, 7, 6] #>>> [9, 8, 7, 6] ns[~4:~0][::-2] ns[~0:~4:-2] #>>> [9, 7] #>>> [9, 7]