Как правильно написать генератор?
Задача: Генератор, создающий все возможные уникальные комбинации элементов из нескольких последовательностей.
Я написал код по примеру, но он выводит не все комбинации. Как сделать так, чтобы в комбинациях последовательности менялись местами? И как можно поменять количество символов в комбинации? Например у нас есть 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))