Generating all combinations of groupings from a list that contains all the elements of this list

I have a list (which can be of any length) ...

iterable = [A,B,C,D,E,F] # length = 6 in this example

I would like to get all possible groupings of this list that contain all the elements (six in the above example) and display a set of sets ...

{{{A,B,C,D,E,F}}
{{A}, {B,C,D,E,F}}
{{A}, {B}, {C,D,E,F}}
{{A}, {C}, {B,D,E,F}}
{{A}, {D}, {B,C,E,F}}
{{A}, {E}, {B,C,D,F}}
{{A}, {F}, {B,C,D,E}}
{{A}, {B,C}, {D,E,F}}
{{A}, {B,D}, {C,E,F}}
{{A}, {B,E}, {C,D,F}}
{{A}, {B,F}, {C,D,E}}
{{A}, {C,D}, {B,E,F}}
{{A}, {C,E}, {B,D,F}}
{{A}, {C,F}, {B,D,E}}
{{A}, {D,E}, {B,C,F}}
{{A}, {D,F}, {B,C,E}}
{{A}, {E,F}, {B,C,D}}
{{A}, {B}, {C}, {D,E,F}}
{{A}, {B}, {D}, {C,E,F}}
{{A}, {B}, {E}, {C,D,F}}
{{A}, {B}, {F}, {C,D,F}}
{{A}, {C}, {D}, {B,E,F}}
{{A}, {C}, {E}, {B,D,F}}
{{A}, {C}, {F}, {B,D,E}}
{{A}, {D}, {E}, {B,C,F}}
{{A}, {D}, {F}, {B,C,E}}
{{A}, {E}, {F}, {B,D,E}}
{{A}, {B,C}, {D}, {E,F}}
{{A}, {B,C}, {E}, {D,F}}
{{A}, {B,C}, {F}, {D,E}}
{{A}, {B,D}, {C}, {E,F}}
{{A}, {B,D}, {E}, {C,F}}
{{A}, {B,D}, {F}, {C,E}}
{{A}, {B,E}, {C}, {D,F}}
{{A}, {B,E}, {D}, {C,F}}
{{A}, {B,E}, {F}, {C,D}}
{{A}, {B,F}, {C}, {D,E}}
{{A}, {B,F}, {D}, {C,E}}
{{A}, {B,F}, {E}, {C,D}}
{{A}, {C,D}, {B}, {E,F}}
{{A}, {B}, {C}, {D}, {E,F}}
{{A}, {B}, {C}, {E}, {D,F}}
{{A}, {B}, {C}, {F}, {D,E}}
...
{{A}, {B}, {C}, {D}, {E}, {F}}
{{B}, {A,C,D,E,F}}
{{B}, {A,C}, {D,E,F}}
{{B}, {A,D}, {C,E,F}}
{{C}, {A,B,D,E,F}}
{{D}, {A,B,C,E,F}}
{{E}, {A,B,C,D,F}}
{{F}, {A,B,C,D,E}}
{{A,B}, {C,D,E,F}}
{{A,C}, {B,D,E,F}}
{{A,D}, {B,C,E,F}}
{{A,E}, {B,C,D,F}}
{{A,F}, {B,C,D,E}}
{{B,C}, {A,D,E,F}}
{{B,D}, {A,C,E,F}}
{{B,E}, {A,C,D,F}}
{{B,F}, {A,C,D,E}}
{{C,D}, {A,B,E,F}}
{{C,E}, {A,B,D,F}}
{{C,F}, {A,B,D,E}}
{{D,E}, {A,B,C,F}}
{{D,F}, {A,B,C,E}}
{{E,F}, {A,B,C,D}}
{{A,B,C}, {D,E,F}}
{{A,B,D}, {C,E,F}}
{{A,B,E}, {C,D,F}}
{{A,B,F}, {C,D,E}}
{{A,C,D}, {B,E,F}}
{{A,C,E}, {B,D,F}}
{{A,C,F}, {B,D,E}}
{{A,D,E}, {B,C,F}}
{{A,D,F}, {B,C,E}}
{{A,E,F}, {B,C,D}}
...} # I left out a bunch, but I think you get the idea of what I need

I try to use itertools.combinations as shown below, and then use the recursive method to generate the rest of the set (letters that do not appear in each of the output combinations), but I cannot get the desired result.

combinations = set(itertools.chain.from_iterable(itertools.combinations(iterable, r) for r in range(len(iterable)+1)))
+4
source share

Source: https://habr.com/ru/post/1691381/


All Articles