Espero ter entendido corretamente (pequenas amostras são sempre úteis).
Eu acho que loops aninhados são a maneira correta de fazer isso, talvez você tenha feito algo errado?
Há também itertools.product
que faz isso mais rápido para você. Aqui está um pequeno exemplo:
>>> from itertools import product
>>> x = ["a", "b", "c"]
>>> y = ["d", "e", "f"]
>>> for t in product(x, y):
... print t
...
('a', 'd')
('a', 'e')
('a', 'f')
('b', 'd')
('b', 'e')
('b', 'f')
('c', 'd')
('c', 'e')
('c', 'f')
>>>