Suppose we have a list L = ['a', 'b', 'c']
, I would like to perform a group sampling of L
to generate an expected result:
[['a'], ['b'], ['c'], ['a', 'b'], ['a', 'c'], ['b', 'c'], ['a', 'b', 'c']]
We can see, in this final output, a list of lists, its each element, there are no repeated elements without considering the order. How to implement it in Python?
CodePudding user response:
One way of doing it is using combinations
from itertools
module. Do it in a for loop and change its r=
parameter every time. r=1
, r=2
, until r=len(L)
:
from itertools import combinations
lst = ["a", "b", "c"]
print([list(item) for i in range(1, len(lst) 1) for item in combinations(lst, i)])
output:
[['a'], ['b'], ['c'], ['a', 'b'], ['a', 'c'], ['b', 'c'], ['a', 'b', 'c']]