問題
多重ループの深さが変数$n$で渡されるときに,以下のようなことがしたい。
- $n=2$ のとき
for i in range(5):
for j in range(5):
# 処理
- $n=4$ のとき
for i in range(5):
for j in range(5):
for k in range(5):
for l in range(5):
# 処理
長らく「調べ方がわからない&調べても解決方法が見つからない」状態だったのですが,やっと解決方法が分かったので備忘録も兼ねて記録しておきます。
解決方法
なんのことはない。itertools.product()
を使えばいいだけだった。
import itertools
for i in itertools.product(range(5), repeat=n):
# 処理
itertools
は本当に優秀だなぁ(;´∀`)
おまけ
おまけとして,僕が今まで使用していた方法を載せておきます。一応やりたいことはできるのですが,パッと見何やってるか分かりづらいのでもっと簡単に書きたかった。
# 再帰ジェネレータ
def for_gen(n, count):
for i in range(5):
if count == 1:
yield [i]
else:
for li in for_gen(n, count - 1):
yield [i] + li
for i in for_gen(n, n):
# 処理