code: def discrete_columns(df, ignore):
      
      lst = []
      for col in df:
          if array_kind.discrete(df[col]) and (col not in ignore):
              # Some columns are represented as object dtype
              # but may have compound structures as values.
              try:
                  hash(df[col].iloc[0])
              except TypeError:
                  continue
              lst.append(col)
      return lst
docs: Return a list of the discrete columns in the
      dataframe `df`. `ignore` is a list|set|tuple with the
      names of the columns to skip.