docs: def partition(pred, iterable):
      'Use a predicate to partition entries into false entries and true entries'
      # partition(is_odd, range(10)) --> 0 2 4 6 8   and  1 3 5 7 9
      t1, t2 = itertools.tee(iterable)
      try:
          return itertools.ifilterfalse(pred, t1), itertools.ifilter(pred, t2)
      except:
          return itertools.filterfalse(pred, t1), filter(pred, t2)