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
полезна в комбинаторных задачах и упрощает работу с вложенными циклами.