itertools.product
Функция itertools.product используется для вычисления декартова произведения входных итерируемых объектов. Она эквивалентна вложенным циклам for, но записывается компактнее и эффективнее использует память.
Синтаксис
from itertools import product
itertools.product(*iterables, repeat=1)*iterables— последовательности, для которых вычисляется декартово произведение.repeat— сколько раз использовать входные последовательности (по умолчанию1).
Примеры использования
Простое декартово произведение
from itertools import product
A = [1, 2]
B = ['a', 'b']
result = list(product(A, B))
print(result)Вывод:
[(1, 'a'), (1, 'b'), (2, 'a'), (2, 'b')]Использование параметра repeat
from itertools import product
result = list(product([0, 1], repeat=3))
print(result)Вывод:
[(0, 0, 0), (0, 0, 1), (0, 1, 0), (0, 1, 1), (1, 0, 0), (1, 0, 1), (1, 1, 0), (1, 1, 1)]Развертывание результата с помощью *
for p in product('AB', repeat=2):
print(''.join(p))Вывод:
AA
AB
BA
BBПримечание
Функция product возвращает кортеж из элементов. Для того чтобы их объединить, необходимо использовать метод .join() для пустой строки
Применение
- Перебор всех возможных комбинаций параметров.
- Генерация булевых последовательностей.
- Поиск возможных сочетаний элементов.
Функция product полезна в комбинаторных задачах и упрощает работу с вложенными циклами.