幂集

返回给定可迭代对象的幂集。

  • 使用list()将给定的值转换为列表。
  • 使用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)]