code: def partition(pred, iterable, tolist=False):
      '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)
      ifalse = six.moves.filterfalse(pred, t1)
      itrue = six.moves.filter(pred, t2)
      if tolist:
          return list(ifalse), list(itrue)
      else:
          return ifalse, itruf partition(pred, iterable, tolist=False):
      '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)
      ifalse = six.moves.filterfalse(pred, t1)
      itrue = six.moves.filter(pred, t2)
      if tolist:
          return list(ifalse), list(itrue)
      else:
          return ifalse, itrue
docs: Use a predicate to partition entries into false entries and true entries