code: def include_context(predicate, num, iterative):
      
      (it0, it1, it2) = itertools.tee(iterative, 3)
      psf = _forward_shifted_predicate(predicate, num, it1)
      psb = _backward_shifted_predicate(predicate, num, it2)
      return (e for (e, pf, pb) in zip(it0, psf, psb) if pf or pb)
docs: Return elements in `iterative` including `num` before and after elements.
  
      >>> ''.join(include_context(lambda x: x == '!', 2, 'bb!aa__bb!aa'))
      'bb!aabb!aa'