Returns the power set of the elements of a given list (even if some of those elements are also lists).
Power Set List from Input List
# From another DaniWeb snippet
def int2bin(n, count=24):
"""returns the binary of integer n, using count number of digits"""
return "".join([str((n >> y) & 1) for y in range(count-1, -1, -1)])
# PowerSet of a List
def PowerSet(orignal_list):
list_size = len(orignal_list)
num_sets = 2**list_size
powerset = []
# Don't include empty set
for i in range(num_sets)[1:]:
subset = []
binary_digits = list(int2bin(i,list_size))
list_indices = range(list_size)
for (bit,index) in zip(binary_digits,list_indices):
if bit == '1':
subset.append(orignal_list[index])
powerset.append(subset)
return powerset
if __name__ == "__main__":
print PowerSet([1,2,3])
Be a part of the DaniWeb community
We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.