2022年04月13日 更新
どうも、クラゲジュニアです。
例えば、3つのアイテムがあって、それぞれ持っていくか持っていかないかを検討したいときに、すべての組み合わせを配列で出したいとします。
例えば「ゲーム機」「本」「お菓子」があったとして、(1, 0, 1)
は「ゲーム機」と「お菓子」を持っていくという意味です。
patterns = []
for n2 in range(2):
for n1 in range(2):
for n0 in range(2):
patterns.append((n2, n1, n0))
print(patterns)
# 出力結果
# [(0, 0, 0), (0, 0, 1), (0, 1, 0), (0, 1, 1), (1, 0, 0), (1, 0, 1), (1, 1, 0), (1, 1, 1)]
例えばアイテムが増えたら、さらにfor文や変数nを追加する必要があります。
2行で書けます。
import itertools
patterns = list(itertools.product(range(2), repeat=3))
print(patterns)
# 出力結果
# [(0, 0, 0), (0, 0, 1), (0, 1, 0), (0, 1, 1), (1, 0, 0), (1, 0, 1), (1, 1, 0), (1, 1, 1)]
アイテムが増えたらrepeat
の3
の数値を変えるだけでOK。
参考:https://docs.python.org/ja/3/library/itertools.html
以上です。