プログラミング初学者です。
*編集依頼の内容を〜〜〜部分に追記しています。
複数のリストの中身の組合せを作成し、別の新規なリストを作成しようとしています。
下記のようなコードを実行したところ私のPCでは所要時間550秒でした。
このスクリプトではrepeat=6にしていますが、さらに複雑な計算をしたい希望があります。
具体的には、2つ目のコードのようにrepeat=10にしたり、後半部分の「for x,y in itertools.product(seq_1,seq_2)」をseq_3,seq_4を追加した上で「for w,x,y,z in itertools.product(seq_1,seq_2,seq_3,seq_4)」などネストをさらに深くしたいです。
概算したのですが、
すでに1つ目のコードをrepeat=10にしただけでも1年ぐらいかかりそうです。
何か方法はあるのでしょうか。
今回の計算を達成することは不可能でも短縮できる方法があれば、ご教示いただけますと幸いです。
編集内容
〜〜〜〜
解きたい問題
「」「」「」・・・・「」「」「」のように20個の箱が順番に並んでいて、各々その箱の中に●と▲の2つの石を入れます。
この●と▲の石には1〜4までの数字が書かれています。
箱「」には順番があり左から1〜20までの箱番号がふられています。
石の順番は問いません。
この箱の並びを1つの配列と定義します。
この場合、配列の種類は4の20乗通り×4の20乗通りになります。
20個の箱が並んだ配列は、合計で2つあります。
それらを配列①、配列②と定義します。
配列①と配列②で存在する全ての組み合わせを作り出して、以降の計算を行いたいと思っています。
*ここからの内容は質問の範囲外です。補足です。
配列①と配列②から1つずつ箱「」を取り出して、その箱の中にある4つの数字(●2つと▲2つ)と掛け合わせます(値1)。
さらに配列①から箱を取り出した位置の箱番号と配列②から箱を取り出した位置の箱番号の差分をとり、その差分を値1にかけて値2を得ます。
全ての配列①と配列②の中の組み合わせで、かつその各々の組み合わせの中で箱を取り出す位置に応じた値2を網羅的に取得したいと考えています。
〜〜〜〜
コード1
python
1import time 2import itertools 3 4time_start = time.time() 5 6txt = [1,2,3,4] 7 8seq_1 = list(itertools.product(txt, repeat=6)) 9seq_2 = list(itertools.product(txt, repeat=6)) 10target = [] 11 12for x,y in itertools.product(seq_1,seq_2): 13 a = [x,y] 14 target.append(a) 15 16print(target) 17 18time_end = time.time() 19 20print('所要時間:{}'.format(time_end-time_start))
コード2 目標
python
1import time 2import itertools 3 4time_start = time.time() 5 6txt = [1,2,3,4] 7 8seq_1 = list(itertools.product(txt, repeat=10)) 9seq_2 = list(itertools.product(txt, repeat=10)) 10seq_3 = list(itertools.product(txt, repeat=10)) 11seq_4 = list(itertools.product(txt, repeat=10)) 12target = [] 13 14for w,x,y,z in itertools.product(seq_1,seq_2,seq_3,seq_4): 15 a = [w,x,y,z] 16 target.append(a) 17 18print(target) 19 20time_end = time.time() 21 22print('所要時間:{}'.format(time_end-time_start))
回答3件
あなたの回答
tips
プレビュー