n 個のリストを含むリストがあるとします。長さ n のリストのすべての可能な組み合わせを取得し、各要素がその位置を維持するきちんとした方法はありますか。
次に例を示します。
lists=[[1],[2,3],[4,5]]
出力:
[[1,2,4],
[1,3,4],
[1,2,5],
[1,3,5]]
これに使用できますitertools.product
:
>>> import itertools
>>> lists = [[1], [2, 3], [4, 5]]
>>> list(itertools.product(*lists))
[(1, 2, 4), (1, 2, 5), (1, 3, 4), (1, 3, 5)]
最初に頭に浮かんだのは次のとおりです。
def find_permutations(lists, context):
if len(lists) == 1:
for item in lists[0]:
yield context + [item]
else:
for item in lists[0]:
for permutation in find_permutations(lists[1:], context + [item]):
yield permutation