Как правильно написать генератор?

Задача: Генератор, создающий все возможные уникальные комбинации элементов из нескольких последовательностей.

Я написал код по примеру, но он выводит не все комбинации. Как сделать так, чтобы в комбинациях последовательности менялись местами? И как можно поменять количество символов в комбинации? Например у нас есть 3 последовательности, надо сделать комбинации состоящие из 4 символов.

Код:

import itertools

def unique_combinations_generator(*iterables):
    for combination in itertools.product(*iterables):
        yield combination

sequence1 = [1, 2, 3]
sequence2 = ['a', 'b', 'c']
sequence3 = ['x', 'y']

combinations = unique_combinations_generator(sequence1, sequence2, sequence3)
for combo in combinations:
    print(combo)

Ответы (1 шт):

Автор решения: MBo

Если я правильно понял задачу, то вот генерация 192 комбинаций от [1, 1, 'a', 'x'] до ['y', 'b', 2, 2]

import itertools, more_itertools

s = [[1, 2,],['a','b'],['x','y']]
seq = [0,1,2,0]

#создаём перестановку индексов
for p in more_itertools.distinct_permutations(seq):

    #и на её основе перестановку последовательностей
    perm = [s[o] for o in p]

    #и теперь комбинацию
    for combination in itertools.product(*perm):
        print(list(combination))
→ Ссылка