BREAKING: finally fixing iterutils.pairwise. pairwise used to call to chunked, now it calls to windowed. pairwise([1, 2, 3, 4]) no longer returns [(1, 2), (3, 4)]. Instead, it returns [(1, 2), (2, 3), (3, 4)], which is what I always mean when I say pairwise.

This commit is contained in:
Mahmoud Hashemi 2016-04-18 22:39:22 -07:00
parent baf4619c6d
commit c1c0107fc4
1 changed files with 26 additions and 8 deletions

View File

@ -234,18 +234,36 @@ def chunked_iter(src, size, **kw):
return
def pairwise(src, count=None, **kw):
"""Convenience function for calling :func:`chunked` with *size* set to
2.
def pairwise(src):
"""Convenience function for calling :func:`windowed` on *src*, with
*size* set to 2.
>>> pairwise(range(5))
[(0, 1), (1, 2), (2, 3), (3, 4)]
>>> pairwise([])
[]
The number of pairs is always one less than the number of elements
in the iterable passed in, except on empty inputs, which returns
an empty list.
"""
return chunked(src, 2, count, **kw)
return windowed(src, 2)
def pairwise_iter(src, **kw):
"""Convenience function for calling :func:`chunked_iter` with *size*
set to 2.
def pairwise_iter(src):
"""Convenience function for calling :func:`windowed_iter` on *src*,
with *size* set to 2.
>>> list(pairwise_iter(range(5)))
[(0, 1), (1, 2), (2, 3), (3, 4)]
>>> list(pairwise_iter([]))
[]
The number of pairs is always one less than the number of elements
in the iterable passed in, or zero, when *src* is empty.
"""
return chunked_iter(src, 2, **kw)
return windowed_iter(src, 2)
def windowed(src, size):