docs: def flag_unique_items(list_):
      """
      Returns a list of flags corresponding to the first time an item is seen
  
      Args:
          list_ (list): list of items
  
      Returns:
          flag_list
  
      Timing:
          import random
          import utool as ut
  
          def random_items(n, m):
              rng = random.Random(0)
              return [rng.randint(0, n) for _ in range(m)]
  
          m = 1000
  
          def method1(list_):
              seen = set()
              def unseen(item):
                  if item in seen:
                      return False
                  seen.add(item)
                  return True
              flag_list = [unseen(item) for item in list_]
              return flag_list
  
          def method2(list_):
              return ut.index_to_boolmask([list_.index(x) for x in set(list_)], len(list_))
  
          def method3(list_):
              return ut.index_to_boolmask(dict(zip(reversed(list_), reversed(range(len(list_))))).values(), len(list_))
  
  
          import ubelt as ub
          ub.Timerit.DEFAULT_VERBOSE = False
  
          import plottool as pt
          ut.qtensure()
          exps = [0, .25, .5, .75, 1, 2]
          pnum_ = pt.make_pnum_nextgen(nSubplots=len(exps))
          current = ut.flag_unique_items
  
          for count, exp in ut.ProgIter(list(enumerate(exps, start=1))):
              ydatas = ut.ddict(list)
              xdata = []
              for m in ut.ProgIter(list(range(0, 10000, 100)), freq=1):
                  xdata.append(m)
                  num = 10
                  n = int(m ** exp)
                  list_ = random_items(n=n, m=m)
                  ydatas['method1'].append(ub.Timerit(num).call(method1, list_))
                  ydatas['method2'].append(ub.Timerit(num).call(method2, list_))
                  ydatas['method3'].append(ub.Timerit(num).call(method3, list_))
                  ydatas['current'].append(ub.Timerit(num).call(current, list_))
  
                  # assert method1(list_) == method3(list_)
                  # assert method1(list_) == current(list_)
  
              pt.multi_plot(
                  xdata, list(ydatas.values()), label_list=list(ydatas.keys()),
                  ylabel='time', title=str(exp), fnum=1, pnum=pnum_())
  
      """
      len_ = len(list_)
      item_to_index = dict(zip(reversed(list_), reversed(range(len_))))
      flag_list = index_to_boolmask(item_to_index.values(), len_)
      return flag_list