Advertisement
DeaD_EyE

chunker generator

Nov 3rd, 2016
321
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.88 KB | None | 0 0
  1. # This could be improved.
  2.  
  3. def chunker(iterable, num):
  4.     """
  5.    Returns an generator which yields the available chunks.
  6.    If the last chunk is incomplete, it'll be cut off.
  7.    """
  8.     iterator = iter(iterable)
  9.     while iterator:
  10.         ret = []
  11.         for _ in range(num):
  12.             try:
  13.                 ret.append(next(iterator))
  14.             except StopIteration:
  15.                 return
  16.         else:
  17.             yield ret
  18.  
  19.  
  20. # hint from #python: use itertools
  21. # credits to: KirkMcDonald
  22.  
  23. num = 2
  24. iterable = [1,2,3,4]
  25. list(itertools.zip(*[iter(iterable)] * 2)) # no elements will lost
  26. list(zip(*[iter(iterable)] * num)) # last incomplete chunks will be lost
  27.  
  28. #as function
  29.  
  30. def chunker_builtin(zip_function, length, iterable):
  31.     return zip_function(*[iter(iterable)] * length)
  32.  
  33. # chunker_builtin(itertools.zip_longest, 2, iterable) -> returns an generator
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement