Получаем все возможные комбинации из n элементов списка

Итак, нам необходимо вывести все вариации n элементов в некотором списке. Будем считать комбинации вида [a, b, c] и [c, b, a] одинаковыми.

С этой задачей справится модуль itertools и его функция combinations:

>>> import itertools
>>> digits = [2,5,8,0]
>>> list(itertools.combinations(digits, 3)) # получаем возможные комбинации
[(2, 5, 8), (2, 5, 0), (2, 8, 0), (5, 8, 0)]
>>> len(list(itertools.combinations(digits, 3))) # получаем количество комбинаций
4