ホームページ > バックエンド開発 > Python チュートリアル > Python の「itertools」モジュールを使用してパワーセットを効率的に生成するにはどうすればよいですか?

Python の「itertools」モジュールを使用してパワーセットを効率的に生成するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-12-17 22:58:11
オリジナル
436 人が閲覧しました

How Can Python's `itertools` Module Be Used to Efficiently Generate a Powerset?

パワーセットの生成: 詳細な説明

集合 S が与えられた場合、S のパワーセットは S のすべてのサブセットの集合を指します。たとえば、集合 {0, 1, 2, 3} の場合、そのパワーセットには空の集合、単一の要素を持つサブセット、サブセットが含まれます。 2 つの要素を含むサブセット、3 つの要素を含むサブセット、および元のセット自体。

解決策: Python の itertools モジュールを使用したパワーセットの実装

Python の itertools モジュールは、生成するための簡単なレシピを提供します。パワーセット:

from itertools import chain, combinations

def powerset(iterable):
    "powerset([1,2,3]) --> () (1,) (2,) (3,) (1,2) (1,3) (2,3) (1,2,3)"
    s = list(iterable)
    return chain.from_iterable(combinations(s, r) for r in range(len(s)+1))
ログイン後にコピー

この関数は反復可能値を次のように受け取りますを入力し、その要素の可能なすべての組み合わせを生成します。組み合わせ関数は、空のサブセットからすべての要素を含むサブセットまで、さまざまなサイズのサブセットを生成します。

使用例:

関数の動作を説明するために、次のことを考えてみましょう。 set "abcd":

>>> list(powerset("abcd"))
[(), ('a',), ('b',), ('c',), ('d',), ('a', 'b'), ('a', 'c'), ('a', 'd'), ('b', 'c'), ('b', 'd'), ('c', 'd'), ('a', 'b', 'c'), ('a', 'b', 'd'), ('a', 'c', 'd'), ('b', 'c', 'd'), ('a', 'b', 'c', 'd')]
ログイン後にコピー

デフォルトでは、関数には空のタプルも含まれています。 range ステートメントを range(1, len(s) 1) に調整することで省略できます。

以上がPython の「itertools」モジュールを使用してパワーセットを効率的に生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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