Разница между функциями permutations и combinations в itertools заключается в том, что они решают разные задачи:
Таким образом, перестановки представляют все возможные порядки всех значений, а комбинации — все возможные выборы некоторых, ни одного или всех значений. 4
Для получения комбинаций с повторением или заменой можно вызвать функцию itertools.combinationswithreplacement. 4