code: def intertwine(*iterables):
      
      iterables = tuple(imap(ensure_iterable, iterables))
  
      empty = object()
      return (item
              for iterable in izip_longest(*iterables, fillvalue=empty)
              for item in iterable if item is not empty)
docs: Constructs an iterable which intertwines given iterables.
  
      The resulting iterable will return an item from first sequence,
      then from second, etc. until the last one - and then another item from
      first, then from second, etc. - up until all iterables are exhausted.