Мне крайне нужна помощь алгоритма при объединении списков внутри списков. Предполагая, что у меня есть следующая структура данных:
fields = [ ['a1', 'a2', 'a3'],
['b1', 'b2', 'b3'],
['c1', 'c2', 'c3'],
['d1', 'd2', 'd3'] ]
Я пытаюсь написать генератор (Python), который выдаст каждую возможную комбинацию элементов так, чтобы следующий код:
for x in thegenerator(fields):
print(x)
даст следующий вывод:
['a1', 'b1', 'c1', 'd1']
['a1', 'b1', 'c1', 'd2']
['a1', 'b1', 'c1', 'd3']
['a1', 'b1', 'c2', 'd1']
['a1', 'b1', 'c2', 'd2']
['a1', 'b1', 'c2', 'd3']
...
['a3', 'b3', 'c3', 'd3']
Тем не менее, мое мышление сегодня полностью отключено, поэтому я не могу думать, как мне лучше всего перебрать структуру, чтобы получить все комбинации наиболее чистым способом с использованием Python. Я уверен, что это было сделано ранее кем-то, но после нескольких поисков в Google и стеке я отказался от поиска правильной комбинации ключевых слов, чтобы найти подходящий алгоритм для этой проблемы.
Есть какие-нибудь идеи, каков будет самый чистый алгоритм, чтобы это исправить?