У меня есть список массивов, и я хотел бы получить декартово произведение элементов в массивах.Как применить itertools.product к элементам списка списков?
Я буду использовать пример, чтобы сделать это более конкретное ...
itertools.product, кажется, сделать трюк, но я застрял в мелочах.
arrays = [(-1,+1), (-2,+2), (-3,+3)];
Если я
cp = list(itertools.product(arrays));
Я получаю
cp = cp0 = [((-1, 1),), ((-2, 2),), ((-3, 3),)]
Но то, что я хочу, чтобы это
cp1 = [(-1,-2,-3), (-1,-2,+3), (-1,+2,-3), (-1,+2,+3), ..., (+1,+2,-3), (+1,+2,+3)].
Я попробовал несколько разные вещи:
cp = list(itertools.product(itertools.islice(arrays, len(arrays))));
cp = list(itertools.product(iter(arrays, len(arrays))));
Все они дали мне CP0 вместо CP1.
Любые идеи?
Заранее спасибо.
У вас уже есть ответы на приведенные ниже, но это имеет некоторые хорошие примеры использования для функции itertools продукта: https://www.hackerrank.com/challenges/itertools-product – Afflatus