David542:
全加算器をテストするために、私は、次の3つの方法(input_aための1つ、input_bのための1つ、およびcarry_cに対して1つ)内のすべての可能な0または1の入力を組み合わせています。これを行うには私がやっています:
>>> [(bit1, bit2, bit3) for bit1 in a for bit2 in a for bit3 in a]
[(0, 0, 0), (0, 0, 1), (0, 1, 0), (0, 1, 1), (1, 0, 0), (1, 0, 1), (1, 1, 0), (1, 1, 1)]
これは罰金を動作しますが、これについての私の2の考えは以下のとおりです。
- これを行うにはより多くの神託の方法はあります。に建てられたような何か
combinations([0,1], 3)
? - 例えば、私はそれを20回記述することなく、20個の可能性を行うことができるように抽象リスト-理解への道があるだろうか?
私はで少し見てきましたitertools
が、それは上記の場合のために、上記のリストの内包表記として(そうでない場合より)多くのコードとしてちょうど約必要であることを使用してのように思えます。
iz_:
あなたは使用することができますproduct
からitertools
(デカルト積):
from itertools import product
print(list(product([0, 1], repeat=3)))
出力:
[(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
、引数を。