title | type | tags | author | cover | dateModified | ||
---|---|---|---|---|---|---|---|
Powerset |
snippet |
|
chalarangelo |
rock-climbing |
2020-11-02 19:28:27 +0200 |
Returns the powerset of a given iterable.
- Use
list()
to convert the given value to a list. - Use
range()
anditertools.combinations()
to create a generator that returns all subsets. - Use
itertools.chain.from_iterable()
andlist()
to consume the generator and return a 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)]