前提・実現したいこと
Python3.8で数値をリストに代入するプログラムを書いています。
for文とタプルを併用して数値をリストに代入させようとしていますが、数値発生がうまくいきません。
具体的には以下のようなルールで数値を発生させようとしています。
- 1桁目の数値は数値列のタプルから読み出してその数値までfor文でカウントアップする
- 2桁目の数値はタプルの数値を一つカウントアップしきったら2桁目用の固定値まで+1させる
- 3桁目の数値は2桁目を固定値まで使ったら3桁目用の固定値まで+1させる
- 4桁目も3桁目と同様の挙動
例としてタプルに(2,3,4)を保持させ、2桁目以降の固定値は3とします
1111
1112
1121
1122
1123
1131
1132
1133
1134
1211
1212
1221
1222
1223
1231
1232
1233
1234
1311
1312
.
.
.
という数値列を発生させたいです。
該当のソースコード
id_number = 1 tuple1 = (2,3,4) for i1 in range(3): for i2 in range(3): for i3 in range(3): for i_tuple in tuple1: for i4 in range(i_tuple): code = 'list_{} = list([{},{}])'.format(id_number,\ (i1+1)*1000 + (i2+1)*100 + (i3+1)*10 + i4+1, id_number) exec(code) id_number += 1
試したこと
Python3.8.3
1for i4 in range(i_tuple): 2 code = 'list_{} = list([{},{}])'.format(id_number, (i1+1)*1000 + (i2+1)*100 + (i3+1)*10 + i4+1, id_number) 3 exec(code) 4 id_number += 1 5i3 += 1 6
これでは1133, 1134 まではうまく進むのですが、このあと1121に戻ってしまいます。
上述の数値列を生み出す上手い方法がありましたらご教授願いますでしょうか。よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー