cartes and zip could be useful here:

```
>>> fp=[(1,2),(3,4)]
>>> fq=[(5,6),(7,8)]
>>> for s, t in cartes(zip(*fp)[0], zip(*fq)[0]):
...  print s,t
...
1 5
1 7
3 5
3 7
>>> for s, t in cartes([i for i,_ in fp], [i for i,_ in fq]):
...  print s,t
...
1 5
1 7
3 5
3 7
```