diff options
author | Raymond Hettinger <python@rcn.com> | 2005-03-27 20:11:44 (GMT) |
---|---|---|
committer | Raymond Hettinger <python@rcn.com> | 2005-03-27 20:11:44 (GMT) |
commit | fdf3bd6630a1797e05124c69ccfb4c07882ae9db (patch) | |
tree | fe85082c53bc5ea91bd5b0c8c6be43972ac07c15 /Doc/lib/libitertools.tex | |
parent | 267b868f23a85c6a63a06452c85487355cf9ab8a (diff) | |
download | cpython-fdf3bd6630a1797e05124c69ccfb4c07882ae9db.zip cpython-fdf3bd6630a1797e05124c69ccfb4c07882ae9db.tar.gz cpython-fdf3bd6630a1797e05124c69ccfb4c07882ae9db.tar.bz2 |
SF patch #1171417: bug fix for islice() in docs
Diffstat (limited to 'Doc/lib/libitertools.tex')
-rw-r--r-- | Doc/lib/libitertools.tex | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/Doc/lib/libitertools.tex b/Doc/lib/libitertools.tex index 780ed55..9d7f7ca 100644 --- a/Doc/lib/libitertools.tex +++ b/Doc/lib/libitertools.tex @@ -250,16 +250,14 @@ by functions or loops that truncate the stream. third line). Equivalent to: \begin{verbatim} - def islice(iterable, *args): + 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} If \var{start} is \code{None}, then iteration starts at zero. |