how can I create a list of all the subsets of a given list in python 3.x?
the list given be like [1,2,3]
and i want an output like
JavaScript
x
2
1
[[1],[2],[3],[1,2],[2,3],[1,3],[1,2,3],[]]
2
Advertisement
Answer
You can use itertools.combinations
to get the combinations:
JavaScript
1
22
22
1
>>> import itertools
2
>>> xs = [1, 2, 3]
3
4
>>> itertools.combinations(xs, 2) # returns an iterator
5
<itertools.combinations object at 0x7f88f838ff48>
6
>>> list(itertools.combinations(xs, 2)) # yields 2-length subsequences
7
[(1, 2), (1, 3), (2, 3)]
8
9
10
>>> for i in range(0, len(xs) + 1): # to get all lengths: 0 to 3
11
for subset in itertools.combinations(xs, i):
12
print(list(subset))
13
14
[]
15
[1]
16
[2]
17
[3]
18
[1, 2]
19
[1, 3]
20
[2, 3]
21
[1, 2, 3]
22
combining with list comprehension, you will get what you want:
JavaScript
1
4
1
>>> [list(subset) for i in range(0, len(xs) + 1)
2
for subset in itertools.combinations(xs, i)]
3
[[], [1], [2], [3], [1, 2], [1, 3], [2, 3], [1, 2, 3]]
4