I have a list (which can be of any length) ...
iterable = [A,B,C,D,E,F]
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 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)))