code: def setproblem(self, target, inputs=None, exclude=()):
          
          self.target = self.attrnum(target)
          exclude = map(self.attrnum, exclude)
          if inputs:
              self.inputs = removeall(self.target, inputs)
          else:
              self.inputs = [a for a in self.attrs
                             if a != self.target and a not in exclude]
          if not self.values:
              self.values = map(unique, zip(*self.examples))
          self.check_me()
docs: Set (or change) the target and/or inputs.
          This way, one DataSet can be used multiple ways. inputs, if specified,
          is a list of attributes, or specify exclude as a list of attributes
          to not use in inputs. Attributes can be -n .. n, or an attrname.
          Also computes the list of possible values, if that wasn't done yet.