Advertisement
DeaD_EyE

flat_list_gen.py

May 25th, 2017
381
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. def flat_sequnce_gen(input_list, traverse=None, exclude=None, debug=False):
  2.     traverse = traverse or (list, tuple)
  3.     exclude = exclude or (str, bytes, int, float, complex)
  4.     iterators = [iter(input_list)]
  5.     last = None
  6.     while iterators:
  7.         try:
  8.             current = next(iterators[-1])
  9.         except StopIteration:
  10.             iterators.pop()
  11.             continue
  12.         if isinstance(current, traverse) and not isinstance(current, exclude):
  13.             if last is current:
  14.                 yield current
  15.                 iterators.pop()
  16.                 continue
  17.             iterators.append(iter(current))
  18.             last = current
  19.         else:
  20.             yield current
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement