28 lines
678 B
Markdown
28 lines
678 B
Markdown
---
|
|
title: Powerset
|
|
type: snippet
|
|
language: python
|
|
tags: [math,list]
|
|
author: chalarangelo
|
|
cover: rock-climbing
|
|
dateModified: 2020-11-02T19:28:27+02:00
|
|
---
|
|
|
|
Returns the powerset of a given iterable.
|
|
|
|
- Use `list()` to convert the given value to a list.
|
|
- Use `range()` and `itertools.combinations()` to create a generator that returns all subsets.
|
|
- Use `itertools.chain.from_iterable()` and `list()` to consume the generator and return a list.
|
|
|
|
```py
|
|
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)))
|
|
```
|
|
|
|
```py
|
|
powerset([1, 2]) # [(), (1,), (2,), (1, 2)]
|
|
```
|