Trovo un po' strana la Tua domanda, non è che con le Comprehensions si possa far di tutto, comunque, sulla falsa riga dell'esempio da Te posto:
>>> def foo(x):
return [x[0]-1, x[1]+1]
>>> import itertools
>>> sum_even = []
>>> for i,j in itertools.product(range(4), range(3)):
if not (i + j) % 2:
sum_even.append(foo([i,j]))
>>> for e in sum_even:
print(e)
[-1, 1]
[-1, 3]
[0, 2]
[1, 1]
[1, 3]
[2, 2]
>>> even_sum = [foo([x, y]) for x,y in itertools.product(range(4),
range(3)) if not(x+y)%2]
>>> for e in even_sum:
print(e)
[-1, 1]
[-1, 3]
[0, 2]
[1, 1]
[1, 3]
[2, 2]
>>>
Soddisfa la domanda?
[Edit] o forse, guardando meglio, intendevi un qualcosa del genere?
>>> even_sum = [foo([x, y]) if not (x+y)%2 else [x,y] for x,y in
itertools.product(range(4),range(3))]
>>> for e in even_sum:
print(e)
[-1, 1]
[0, 1]
[-1, 3]
[1, 0]
[0, 2]
[1, 2]
[1, 1]
[2, 1]
[1, 3]
[3, 0]
[2, 2]
[3, 2]
>>>
con restituzione anche del prodotto invariato quando la condizione non è soddisfatta?