ホームページ > バックエンド開発 > Python チュートリアル > Python でリストから繰り返しを含むすべての順列を生成するにはどうすればよいですか?

Python でリストから繰り返しを含むすべての順列を生成するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-26 02:48:12
オリジナル
401 人が閲覧しました

How Can I Generate All Permutations with Repetitions from a List in Python?

リストからの繰り返しを含む順列の取得

順列を使用してリストから可能なすべての組み合わせを生成しようとすると、よく問題が発生します。繰り返しを排除します。このシナリオでは、同じ数字の組み合わせを含む、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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート