\begin{verbatim}
def islice(iterable, *args):
s = slice(*args)
- next, stop, step = s.start or 0, s.stop, s.step or 1
- for cnt, element in enumerate(iterable):
- if cnt < next:
- continue
- if stop is not None and cnt >= stop:
- break
- yield element
- next += step
+ it = iter(xrange(s.start or 0, s.stop or sys.maxint, s.step or 1))
+ nexti = it.next()
+ for i, element in enumerate(iterable):
+ if i == nexti:
+ yield element
+ nexti = it.next()
\end{verbatim}
\end{funcdesc}