code: def take_percentile_parts(arr, front=None, mid=None, back=None):
      r
      slices = []
      if front:
          slices += [snapped_slice(len(arr), 0.0, front)]
      if mid:
          slices += [snapped_slice(len(arr), 0.5, mid)]
      if back:
          slices += [snapped_slice(len(arr), 1.0, back)]
      parts = flatten([arr[sl] for sl in slices])
      return parts
docs: r"""
      Take parts from front, back, or middle of a list
  
      Example:
          >>> # ENABLE_DOCTEST
          >>> from utool.util_list import *  # NOQA
          >>> import utool as ut
          >>> arr = list(range(20))
          >>> front = 3
          >>> mid = 3
          >>> back = 3
          >>> result = take_percentile_parts(arr, front, mid, back)
          >>> print(result)
          [0, 1, 2, 9, 10, 11, 17, 18, 19]