21 lines
787 B
Python
21 lines
787 B
Python
def list_powerset(lst):
|
|
# the power set of the empty set has one element, the empty set
|
|
result = [[]]
|
|
for x in lst:
|
|
# for every additional element in our set
|
|
# the power set consists of the subsets that don't
|
|
# contain this element (just take the previous power set)
|
|
# plus the subsets that do contain the element (use list
|
|
# comprehension to add [x] onto everything in the
|
|
# previous power set)
|
|
result.extend([subset + [x] for subset in result])
|
|
return result
|
|
|
|
# the above function in one statement
|
|
def list_powerset2(lst):
|
|
return reduce(lambda result, x: result + [subset + [x] for subset in result],
|
|
lst, [[]])
|
|
|
|
def powerset(s):
|
|
return frozenset(map(frozenset, list_powerset(list(s))))
|