Here is how I would approach it:
import itertools
import operator
First make the list of all possible combinations:
funcs = [operator.add, operator.sub, operator.mul, operator.div]
combos = list(itertools.product(funcs, repeat=2))
>>[(<function operator.add>, <function operator.add>),
(<function operator.add>, <function operator.sub>),
(<function operator.add>, <function operator.mul>),
(<function operator.add>, <function operator.div>),
(<function operator.sub>, <function operator.add>),
(<function operator.sub>, <function operator.sub>),
(<function operator.sub>, <function operator.mul>),
(<function operator.sub>, <function operator.div>),
(<function operator.mul>, <function operator.add>),
(<function operator.mul>, <function operator.sub>),
(<function operator.mul>, <function operator.mul>),
(<function operator.mul>, <function operator.div>),
(<function operator.div>, <function operator.add>),
(<function operator.div>, <function operator.sub>),
(<function operator.div>, <function operator.mul>),
(<function operator.div>, <function operator.div>)]
Then we will iterate through this list solving every possible outcome:
for fn in combos:
print 'This combo {} yielded this result {}'.format(fn, fn[1](fn[0](*seq[:2]), seq[-1]))
This combo (<built-in function add>, <built-in function add>) yielded this result 6
This combo (<built-in function add>, <built-in function sub>) yielded this result 0
This combo (<built-in function add>, <built-in function mul>) yielded this result 9
This combo (<built-in function add>, <built-in function div>) yielded this result 1
This combo (<built-in function sub>, <built-in function add>) yielded this result 2
This combo (<built-in function sub>, <built-in function sub>) yielded this result -4
This combo (<built-in function sub>, <built-in function mul>) yielded this result -3
This combo (<built-in function sub>, <built-in function div>) yielded this result -1
This combo (<built-in function mul>, <built-in function add>) yielded this result 5
This combo (<built-in function mul>, <built-in function sub>) yielded this result -1
This combo (<built-in function mul>, <built-in function mul>) yielded this result 6
This combo (<built-in function mul>, <built-in function div>) yielded this result 0
This combo (<built-in function div>, <built-in function add>) yielded this result 3
This combo (<built-in function div>, <built-in function sub>) yielded this result -3
This combo (<built-in function div>, <built-in function mul>) yielded this result 0
This combo (<built-in function div>, <built-in function div>) yielded this result 0
Edit: Here is a way that follows the rules of operations
ops = ['+','-','*','/']
combos = list(itertools.product(ops, repeat=2))
for tup in list(itertools.product(combos, [seq])):
print 'These operations {} evaluate to this ---> {}'.format(tup[0],eval(''.join(*zip(seq[0],tup[0][0],seq[1],tup[0][1],seq[-1]))))
These operations ('+', '+') evaluate to this ---> 6
These operations ('+', '-') evaluate to this ---> 0
These operations ('+', '*') evaluate to this ---> 7
These operations ('+', '/') evaluate to this ---> 1
These operations ('-', '+') evaluate to this ---> 2
These operations ('-', '-') evaluate to this ---> -4
These operations ('-', '*') evaluate to this ---> -5
These operations ('-', '/') evaluate to this ---> 1
These operations ('*', '+') evaluate to this ---> 5
These operations ('*', '-') evaluate to this ---> -1
These operations ('*', '*') evaluate to this ---> 6
These operations ('*', '/') evaluate to this ---> 0
These operations ('/', '+') evaluate to this ---> 3
These operations ('/', '-') evaluate to this ---> -3
These operations ('/', '*') evaluate to this ---> 0
These operations ('/', '/') evaluate to this ---> 0