これを itertools.product() と itertools.permutations() で解決しようとしましたが、必要な組み合わせが見つかりません。これが以前に尋ねられた場合は申し訳ありませんが、どこでも検索しても無駄でした.
たとえば、サイズ 6 のバイト配列が与えられた場合、2 つのゼロと 4 つの 1 を持つすべての可能なセットを簡単に反復するにはどうすればよいでしょうか? つまり、次のシーケンスです (正しいことを願っています)。
- 001111
- 010111
- 011011
- 011101
- 011110
- 100111
- 101011
- 101101
- 101110
- 110011
- 110101
- 110110
- 111001
- 111010
- 111100
シーケンスのサイズが n!/((ni)!*i!) になることは理解していますが、個々の組み合わせを反復することに頭を悩ませることはできません。II は最大 10,000 のサイズの配列で作業するため、可能なすべての "01" 順列をループして、適合しないものを破棄するのは非効率的です。出力の順序も重要ではありません。