私はものにリストを作成したいことは、次のようにゼロの組み合わせの場所に挿入します。私はrepeat
のパラメータが20ほど大きくなったときに、しかしPythonで(0,1)の組み合わせのリストを作成する方法はありますか?
[e for e in itertools.product(range(2), repeat=6) if sum(e)==2]
を使用して、リストを構築することができます
l = [(0, 0, 0, 0, 1, 1),
(0, 0, 0, 1, 0, 1),
(0, 0, 0, 1, 1, 0),
(0, 0, 1, 0, 0, 1),
(0, 0, 1, 0, 1, 0),
(0, 0, 1, 1, 0, 0),
(0, 1, 0, 0, 0, 1),
(0, 1, 0, 0, 1, 0),
(0, 1, 0, 1, 0, 0),
(0, 1, 1, 0, 0, 0),
(1, 0, 0, 0, 0, 1),
(1, 0, 0, 0, 1, 0),
(1, 0, 0, 1, 0, 0),
(1, 0, 1, 0, 0, 0),
(1, 1, 0, 0, 0, 0)]
、コードは非常に時間がかかります。
私は、中間結果をメモリに蓄積することが問題だと思いましたか? 私は必要なリストを作成するためのよりよい方法があることを知りたいと思います。おかげさまで
を与える
は、私には罰金です。そこに大きなオブジェクトがあってもかまいません。 – TigerhawkT3
はい、これはメソッドがすべての可能なバイナリシーケンスを生成し、2つの1を持つものを選ぶので、ますます遅くなるでしょう。あなたは、シーケンスを直接構築する方がよいでしょう。 – pvg