def setproblem(self, target, inputs=None, exclude=()):
self.target = self.attrnum(target)<EOL>exclude = list(map(self.attrnum, exclude))<EOL>if inputs:<EOL><INDENT>self.inputs = removeall(self.target, inputs)<EOL><DEDENT>else:<EOL><INDENT>self.inputs = [a for a in self.attrs<EOL>if a != self.target and a not in exclude]<EOL><DEDENT>if not self.values:<EOL><INDENT>self.values = list(map(unique, list(zip(*self.examples))))<EOL><DEDENT>self.check_me()<EOL>
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.