SF patch #1171417: bug fix for islice() in docs
This commit is contained in:
parent
267b868f23
commit
fdf3bd6630
@ -250,16 +250,14 @@ by functions or loops that truncate the stream.
|
|||||||
third line). Equivalent to:
|
third line). Equivalent to:
|
||||||
|
|
||||||
\begin{verbatim}
|
\begin{verbatim}
|
||||||
def islice(iterable, *args):
|
def islice(iterable, *args):
|
||||||
s = slice(*args)
|
s = slice(*args)
|
||||||
next, stop, step = s.start or 0, s.stop, s.step or 1
|
it = iter(xrange(s.start or 0, s.stop or sys.maxint, s.step or 1))
|
||||||
for cnt, element in enumerate(iterable):
|
nexti = it.next()
|
||||||
if cnt < next:
|
for i, element in enumerate(iterable):
|
||||||
continue
|
if i == nexti:
|
||||||
if stop is not None and cnt >= stop:
|
yield element
|
||||||
break
|
nexti = it.next()
|
||||||
yield element
|
|
||||||
next += step
|
|
||||||
\end{verbatim}
|
\end{verbatim}
|
||||||
|
|
||||||
If \var{start} is \code{None}, then iteration starts at zero.
|
If \var{start} is \code{None}, then iteration starts at zero.
|
||||||
|
@ -265,6 +265,11 @@ class TestBasicOps(unittest.TestCase):
|
|||||||
self.assertEqual(list(islice(xrange(10), 2, None)), range(2, 10))
|
self.assertEqual(list(islice(xrange(10), 2, None)), range(2, 10))
|
||||||
self.assertEqual(list(islice(xrange(10), 1, None, 2)), range(1, 10, 2))
|
self.assertEqual(list(islice(xrange(10), 1, None, 2)), range(1, 10, 2))
|
||||||
|
|
||||||
|
# Test number of items consumed SF #1171417
|
||||||
|
it = iter(range(10))
|
||||||
|
self.assertEqual(list(islice(it, 3)), range(3))
|
||||||
|
self.assertEqual(list(it), range(3, 10))
|
||||||
|
|
||||||
# Test invalid arguments
|
# Test invalid arguments
|
||||||
self.assertRaises(TypeError, islice, xrange(10))
|
self.assertRaises(TypeError, islice, xrange(10))
|
||||||
self.assertRaises(TypeError, islice, xrange(10), 1, 2, 3, 4)
|
self.assertRaises(TypeError, islice, xrange(10), 1, 2, 3, 4)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user