docs: def unique(self, col_or_col_list):
          """
          Return a list of unique values of a column or a list of lists of column list
  
          :param col_or_col_list: a column or a list of columns
          :return:
          """
  
          if isinstance(col_or_col_list, list):
              col_is_list = True
              col_list = col_or_col_list
          else:
              col_is_list = False
              col_list = [col_or_col_list]
  
          output = []
  
          for col in col_list:
  
              if self.auto_cache or self.cache_valid(col):
                  # create factorization cache
                  if not self.cache_valid(col):
                      self.cache_factor([col])
  
                  # retrieve values from existing disk-based factorization
                  col_values_rootdir = self[col].rootdir + '.values'
                  carray_values = bcolz.carray(rootdir=col_values_rootdir, mode='r')
                  values = list(carray_values)
              else:
                  # factorize on-the-fly
                  _, values = ctable_ext.factorize(self[col])
                  values = values.values()
  
              output.append(values)
  
          if not col_is_list:
              output = output[0]
  
          return output