Replace the window() example with pairwise() which demonstrates tee().

This commit is contained in:
Raymond Hettinger 2003-10-26 15:34:50 +00:00
parent f0c5aec85f
commit d591f666de
2 changed files with 14 additions and 23 deletions

View File

@ -405,15 +405,9 @@ def repeatfunc(func, times=None, *args):
else:
return starmap(func, repeat(args, times))
def window(seq, n=2):
"Returns a sliding window (of width n) over data from the iterable"
" s -> (s0,s1,...s[n-1]), (s1,s2,...,sn), ... "
it = iter(seq)
result = tuple(islice(it, n))
if len(result) == n:
yield result
for elem in it:
result = result[1:] + (elem,)
yield result
def pairwise(iterable):
"s -> (s0,s1), (s1,s2), (s2, s3), ..."
a, b = tee(iterable)
return izip(a, islice(b, 1, None))
\end{verbatim}

View File

@ -623,16 +623,10 @@ Samuele
... else:
... return starmap(func, repeat(args, times))
>>> def window(seq, n=2):
... "Returns a sliding window (of width n) over data from the iterable"
... " s -> (s0,s1,...s[n-1]), (s1,s2,...,sn), ... "
... it = iter(seq)
... result = tuple(islice(it, n))
... if len(result) == n:
... yield result
... for elem in it:
... result = result[1:] + (elem,)
... yield result
>>> def pairwise(iterable):
... "s -> (s0,s1), (s1,s2), (s2, s3), ..."
... a, b = tee(iterable)
... return izip(a, islice(b, 1, None))
This is not part of the examples but it tests to make sure the definitions
perform as purported.
@ -681,10 +675,13 @@ False
>>> take(5, imap(int, repeatfunc(random.random)))
[0, 0, 0, 0, 0]
>>> list(window('abc'))
[('a', 'b'), ('b', 'c')]
>>> list(pairwise('abcd'))
[('a', 'b'), ('b', 'c'), ('c', 'd')]
>>> list(window('abc',5))
>>> list(pairwise([]))
[]
>>> list(pairwise('a'))
[]
>>> list(islice(padnone('abc'), 0, 6))