Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import sys
- from itertools import islice
- def window(iterable, n=2):
- it = iter(iterable)
- result = tuple(islice(it, n))
- if len(result) == n:
- yield result
- for elem in it:
- result = result[1:] + (elem,)
- yield result
- class rolling_window(object):
- def __init__(self, iterable, n):
- self.iterable = iterable
- self.n = n
- def __iter__(self):
- return window(self.iterable, self.n)
- exec(sys.stdin.read())
- -----------------------------------------------------------------------------------------------------------------
- import sys
- def rolling_window(iterable, width):
- class InnerGen:
- def __init__(self, iterable, width):
- self.iterable = iterable
- self.width = width
- self.buffer = []
- self.iterator = self.iterable.__iter__()
- def __iter__(self):
- return self
- def __next__(self):
- try:
- self.buffer = self.buffer[1:]
- while len(self.buffer) < width:
- self.buffer.append(self.iterator.__next__())
- return tuple(self.buffer)
- except:
- self.iterator = self.iterable.__iter__()
- raise StopIteration()
- return InnerGen(iterable, width)
- exec(sys.stdin.read())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement