itertools.combinations を使用してセットのすべてのサブセットを生成する方法
Python では、itertools.combinations モジュールがシンプルで効率的なメソッドを提供しますセットのパワーセットを生成します。その方法は次のとおりです:
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))
たとえば、セット {0, 1, 2, 3} のすべてのサブセットを検索するには、次のコードを使用します:
>>> list(powerset([0, 1, 2, 3])) [(), (0,), (1,), (2,), (3,), (0, 1), (0, 2), (0, 3), (1, 2), (1, 3), (2, 3), (0, 1, 2), (0, 1, 3), (0, 2, 3), (1, 2, 3), (0, 1, 2, 3)]
空のタプル () は空のサブセットを表すため、パワーセットに含まれていることに注意してください。
必要に応じて結果に空のタプルが含まれないようにするには、組み合わせループ内の範囲を次のように変更できます:
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(1, len(s)+1))
これにより、返されたサブセットから空のタプルが除外されます。
以上がPython の「itertools.combinations」を使用してセットのすべてのサブセットを生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。