Como aplicar itertools.product a elementos de uma lista de listas?

Eu tenho uma lista de matrizes e gostaria de obter o produto cartesiano dos elementos nas matrizes.

Vou usar um exemplo para tornar isso mais concreto ...

O itertools.product parece fazer o truque, mas estou preso em um pequeno detalhe.

arrays = [(-1,+1), (-2,+2), (-3,+3)];

Se eu fizer

cp = list(itertools.product(arrays));

eu recebo

cp = cp0 = [((-1, 1),), ((-2, 2),), ((-3, 3),)]

Mas o que eu quero é

cp1 = [(-1,-2,-3), (-1,-2,+3), (-1,+2,-3), (-1,+2,+3), ..., (+1,+2,-3), (+1,+2,+3)].

Eu tentei algumas coisas diferentes:

cp = list(itertools.product(itertools.islice(arrays, len(arrays))));
cp = list(itertools.product(iter(arrays, len(arrays))));

Todos eles me deramcp0 ao invés decp1.

Alguma ideia?

Desde já, obrigado.

questionAnswers(2)

yourAnswerToTheQuestion