self.end = end

def __iter__(self):
    return self

def __next__(self):
    if self.start == self.end:
        raise StopIteration()
r = self.seq[self.start]
self.start += 1
return r
Реализация itertools.islice - эффективная нарезка списка