Я могу получить декартово произведение списков благодаря функции itertools.product()
:
lists = [['A', 'B'], ['1', '2'], ['x', 'y']]
combinations = itertools.product(*lists)
# [('A', '1', 'x'), ('A', '2', 'y'), ..., ('B', '2', 'y')]
Я хочу то же самое, но с разными размерами:
all_comb = magicfunction(lists)
# [('A', '1', 'x'), ..., ('B', '2', 'y'), ('A', '1'), ('A', '2'), ... ('2', 'y'), ... ('y')]
Я не вижу единственного очевидного способа сделать это.
Мне нужен метод, который позволил бы мне установить минимальный И максимальный размер кортежей (я имею дело с длинными списками и мне нужны только комбинации размеров от 7 до 3, количество списков и их размер варьируются).
Мои списки больше похожи на:
lists = [['A', 'B', 'C'], ['1', '2'], ['x', 'y', 'z', 'u'], ...] # size may go to a few dozens