w3resource

Python: Find the powerset of a given iterable


Generate Powerset of Iterable

Write a Python program to get the powerset of a given iterable.

Note: A Power Set is a set of all the subsets of a set.

  • 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.

Sample Solution:

Python Code:

from itertools import chain, combinations

# Define a function to generate the powerset of an iterable.
def powerset(iterable):
    s = list(iterable)  # Convert the input iterable to a list.
    return list(chain.from_iterable(combinations(s, r) for r in range(len(s) + 1)))

# Example 1
nums = [1, 2]
print("Original list elements:")
print(nums)
print("Powerset of the said list:")
print(powerset(nums))

# Example 2
nums = [1, 2, 3, 4]
print("\nOriginal list elements:")
print(nums)
print("Powerset of the said list:")
print(powerset(nums)) 

Sample Output:

Original list elements:
[1, 2]
Powerset of the said list:
[(), (1,), (2,), (1, 2)]

Original list elements:
[1, 2, 3, 4]
Powerset of the said list:
[(), (1,), (2,), (3,), (4,), (1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4), (1, 2, 3), (1, 2, 4), (1, 3, 4), (2, 3, 4), (1, 2, 3, 4)]

Flowchart:

Flowchart: Find the powerset of a given iterable.

Python Code Editor:

Previous: Write a Python program to perform a deep flattens a list.
Next: Write a Python program to check if two given lists contain the same elements regardless of order.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Follow us on Facebook and Twitter for latest update.