Skip to content

Instantly share code, notes, and snippets.

@vegarsti
Created February 27, 2018 12:06
Show Gist options
  • Save vegarsti/ba10270452b342ee02b37ded5dfb07c9 to your computer and use it in GitHub Desktop.
Save vegarsti/ba10270452b342ee02b37ded5dfb07c9 to your computer and use it in GitHub Desktop.
def pairwise(iterable, n):
iterator = iter(iterable)
items = [None]*n
for i in range(n):
try:
items[i] = next(iterator)
except StopIteration:
return
yield tuple(items)
first, *middle, last = items
for element in iterator:
first, *middle, last = *middle, last, element
yield (first, *middle, last)
items = pairwise(iterable=range(10), n=4)
for i in items:
print(i)
"""
(0, 1, 2, 3)
(1, 2, 3, 4)
(2, 3, 4, 5)
(3, 4, 5, 6)
(4, 5, 6, 7)
(5, 6, 7, 8)
(6, 7, 8, 9)
"""
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment