Python における冪集合の生成

PythonPythonBeginner
今すぐ練習

This tutorial is from open-source community. Access the source code

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

数学において、集合の冪集合とは、空集合と集合自身を含む、その集合のすべての部分集合の集合です。Pythonでは、与えられた反復可能オブジェクトの冪集合を返す関数を作成することができます。

冪集合

powerset(iterable) という名前のPython関数を書きます。この関数は、反復可能オブジェクトを引数として受け取り、その反復可能オブジェクトの冪集合を返します。この関数は以下の手順に従う必要があります。

  1. 与えられた値をリストに変換します。
  2. range()itertools.combinations() を使用して、すべての部分集合を返すジェネレータを作成します。
  3. 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() を使用します。