- ベストアンサー
pythonで組合せ、順列
pythonで、a=[4,5,6],b=[7,8],c=[9,10],x=a+b+cというリストがあり、 aの順列から1つ(a1)、bの順列から1つ(b1)、cの順列から1つ(c1)を選択し、 それらをxx=a1+b1+c1とするすべてのxxを求めるためにはどうすればいいですか? xxの例 [[6,4,5],[7,8],[10,9]]
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
ほい。 組み合わせをすべて列挙するのと同じ。 個々の要素が順列になるだけ。 >python Python 2.7 (r27:82525, Jul 4 2010, 09:01:59) [MSC v.1500 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import itertools >>> prod=itertools.product >>> perm=itertools.permutations >>> list(prod(perm([4,5,6]),perm([7,8]),perm([9,10]))) [((4, 5, 6), (7, 8), (9, 10)), ((4, 5, 6), (7, 8), (10, 9)), ((4, 5, 6), (8, 7), (9, 10)), ((4, 5, 6), (8, 7), (10, 9)), ((4, 6, 5), (7, 8), (9, 10)), ((4, 6, 5), (7, 8), (10, 9)), ((4, 6, 5), (8, 7), (9, 10)), ((4, 6, 5), (8, 7), (10, 9)), ((5, 4, 6), (7, 8), (9, 10)), ((5, 4, 6), (7, 8), (10, 9)), ((5, 4, 6), (8, 7), (9, 10)), ((5, 4, 6), (8, 7), (10, 9)), ((5, 6, 4), (7, 8), (9, 10)), ((5, 6, 4), (7, 8), (10, 9)), ((5, 6, 4), (8, 7), (9, 10)), ((5, 6, 4), (8, 7), (10, 9)), ((6, 4, 5), (7, 8), (9, 10)), ((6, 4, 5), (7, 8), (10, 9)), ((6, 4, 5), (8, 7), (9, 10)), ((6, 4, 5), (8, 7), (10, 9)), ((6, 5, 4), (7, 8), (9, 10)), ((6, 5, 4), (7, 8), (10, 9)), ((6, 5, 4), (8, 7), (9, 10)), ((6, 5, 4), (8, 7), (10, 9))]
お礼
ありがとうございます。