Home > Mobile >  Repeatedly sample and combine elements of a list
Repeatedly sample and combine elements of a list

Time:11-03

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']]
  • Related