ホームページ >バックエンド開発 >Python チュートリアル >与えられたセットのパワーセットを効率的に生成するにはどうすればよいでしょうか?
パワーセットの生成: エレガントなアプローチ
質問:
セットが与えられた場合、どうすれば効率的に計算できますかパワーセット。元のパワーセットのすべての可能なサブセットを包含します。 set?
答え:
Python の多用途 itertools モジュールは、以下に示すように、パワーセット生成のための優れたソリューションを提供します:
from itertools import chain, combinations def powerset(iterable): s = list(iterable) return chain.from_iterable(combinations(s, r) for r in range(len(s)+1))
説明:
出力:
このパワーセット関数を要素「abcd」を含む反復可能オブジェクトに適用すると、続くpowerset:
[(), ('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')]
Customization:
出力内の最初の空のタプルが望ましくない場合は、1 から反復可能長までの範囲を使用するように range ステートメントを変更するだけです。プラス 1、空の組み合わせをパワーセットから効果的に除外します。
以上が与えられたセットのパワーセットを効率的に生成するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。