def successor(self,state): action = 0 if state[0] == 0: possible1 = (state[3], state[1],state[2], state[0],state[4],state[5] ,state[6],state[7], state[8]) possible2 = (state[1],state[0],state[2], state[3],state[4],state[5], state[6],state[7], state[8]) next_stage = [(action,possible1), (action,possible2)] return next_stage ... and the same for each state[x]