はじめに
数学において、集合の冪集合とは、空集合と集合自身を含む、その集合のすべての部分集合の集合です。Python では、与えられた反復可能オブジェクトの冪集合を返す関数を作成することができます。
冪集合
powerset(iterable) という名前の Python 関数を書きます。この関数は、反復可能オブジェクトを引数として受け取り、その反復可能オブジェクトの冪集合を返します。この関数は以下の手順に従う必要があります。
- 与えられた値をリストに変換します。
range()とitertools.combinations()を使用して、すべての部分集合を返すジェネレータを作成します。itertools.chain.from_iterable()とlist()を使用して、ジェネレータを消費してリストを返します。
from itertools import chain, combinations
def powerset(iterable):
s = list(iterable)
return list(chain.from_iterable(combinations(s, r) for r in range(len(s)+1)))
powerset([1, 2]) ## [(), (1,), (2,), (1, 2)]
まとめ
このチャレンジでは、与えられた反復可能オブジェクトの冪集合を返す Python 関数を作成する方法を学びました。この関数は、すべての部分集合を返すジェネレータを作成するために range() と itertools.combinations() を使用し、ジェネレータを消費してリストを返すために itertools.chain.from_iterable() と list() を使用します。