Find unique combinations with certain number of elements

itertools.combinations() will take any iterable and return tuples of all unique combinations of a certain length. itertools.combinations(iterable, 2) for example will find all unique combinations containing 2 elements.

In [1]:
from itertools import combinations

my_list = ['A', 'B', 'C', 'D']

result = list(combinations(my_list, 2))

print(result)
[('A', 'B'), ('A', 'C'), ('A', 'D'), ('B', 'C'), ('B', 'D'), ('C', 'D')]

And for all combinations containing 3 elements.

In [2]:
result = list(combinations(my_list, 3))

print(result)
[('A', 'B', 'C'), ('A', 'B', 'D'), ('A', 'C', 'D'), ('B', 'C', 'D')]

Finding all unique combinations

In [3]:
result = []
for i in range(len(my_list)+1):
    result.extend(combinations(my_list, i))

print(result)
[(), ('A',), ('B',), ('C',), ('D',), ('A', 'B'), ('A', 'C'), ('A', 'D'), ('B', 'C'), ('B', 'D'), ('C', 'D'), ('A', 'B', 'C'), ('A', 'B', 'D'), ('A', 'C', 'D'), ('B', 'C', 'D'), ('A', 'B', 'C', 'D')]