A, B, CおよびD, E, Fはそれぞれ、百の位、十の位、一の位の数字が入っていてそこから三桁の数字を作ります。
A, B, Cで構成される「146」を基準とします。
AをDに変えた場合の数、BをEに変えた場合の数、CをFに変えた場合の数の組み合わせを入れたリストを作成したいです。
説明が下手なため以下に具体例を示します。
Python
1A = [1] 2B = [4] 3C = [6] 4 5D = [2, 3] 6E = [5] 7F = [7, 8, 9] 8lst = []
このとき
Python
1lst=[[2, 4, 6], [3, 4, 6], [1, 5, 6], [1, 4, 7], [1, 4, 8], [1, 4, 9]]
というリストを作成したいです。
まず百の位をDから取得し、残りは元のB, Cから取得
次に十の位のみEから取得し、残りは元のA, Cから取得
最後に百の位のみFから取得し、残りは元のB, Cから取得です。
D, Fはそれぞれ複数の要素が存在するため、これらは複数の数字ができます。
やってみたこと
Python
1import itertools 2A = [1] 3B = [4] 4C = [6] 5 6D = [2, 3] 7E = [5] 8F = [7, 8, 9] 9lst = [] 10 11tar= [] 12change = [] 13tar.append(A) 14tar.append(B) 15tar.append(C) 16change.append(D) 17change.append(E) 18change.append(F) 19#print(tar) 20i = 0 21while i < len(tar): 22 copy = tar 23 copy[i] = change[i] 24 itr = list(map(list, itertools.product(*copy))) 25 for a in itr: 26 lst.append(a) 27 i+=1 28print(lst)
これだとまずはDの要素 + B + C で三桁の数字が含まれたリストを作ったあとに
D + E + Cで作られた数字が出来てしまします。
説明がわかりにくくて申し訳ございません。
よろしくお願いします。
回答4件
あなたの回答
tips
プレビュー