リストからの繰り返しを含む順列の取得
順列を使用してリストから可能なすべての組み合わせを生成しようとすると、よく問題が発生します。繰り返しを排除します。このシナリオでは、同じ数字の組み合わせを含む、2 つのサイコロを振って 36 通りの結果をすべて生成することを目指します。
この制限に対処するには、デカルト積の概念を利用する必要があります。 2 つのセットのデカルト積は、それらのセットの直接積を表します。この場合、[1, 2, 3, 4, 5, 6] とそれ自体を含むセットのデカルト積は、{1, 2, 3, 4, 5, 6} x {1, 2, 3, 4 となります。 , 5, 6}.
Python 標準ライブラリは、デカルト積を計算する機能を提供する itertools モジュールを提供します。積メソッドを使用し、必要な繰り返し数 (たとえば、repeat=2) で繰り返しパラメーターを指定すると、繰り返しを含むすべての可能な組み合わせを生成できます。
例:
import itertools die_faces = [1, 2, 3, 4, 5, 6] result = [p for p in itertools.product(die_faces, repeat=2)]
このコードは次の出力を生成します:
[(1, 1), (1, 2), (1, 3), (1, 4), (1, 5), (1, 6), (2, 1), (2, 2), (2, 3), (2, 4), (2, 5), (2, 6), (3, 1), (3, 2), (3, 3), (3, 4), (3, 5), (3, 6), (4, 1), (4, 2), (4, 3), (4, 4), (4, 5), (4, 6), (5, 1), (5, 2), (5, 3), (5, 4), (5, 5), (5, 6), (6, 1), (6, 2), (6, 3), (6, 4), (6, 5), (6, 6)]
この結果には、2 つのサイコロを振って考えられる 36 個の結果がすべて含まれます。繰り返しが考慮されていることを確認します。
以上がPython でリストから繰り返しを含むすべての順列を生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。