Использование itertools.product
:
from itertools import product
lst = ['abc', 'xy','d', 'mzqr']
list(map(''.join, product(*lst)))
# ['axdm', 'axdz', 'axdq', 'axdr', 'aydm', 'aydz', 'aydq', 'aydr',
# 'bxdm', 'bxdz', 'bxdq', 'bxdr', 'bydm', 'bydz', 'bydq', 'bydr',
# 'cxdm', 'cxdz', 'cxdq', 'cxdr', 'cydm', 'cydz', 'cydq', 'cydr']
product
принимает любое число итераций (здесь ваш *
-спакованный список строк) и производит их декартово произведение в форма ленивого итератора над tuples
. Это использует str.join
, чтобы превратить кортежи обратно в строки.