У меня есть строка, показывающая шаг в сетке mxn, подобный этой задаче: https://leetcode.com/problems/unique-paths/
step = 'DDRR'
D означает go Вниз и R означает go вправо Я хочу показать перестановки без замены, и я обнаружил, что встроенные средства itertools Python. Но говорят:
Элементы обрабатываются как уникальные в зависимости от их положения, а не от их значения. Поэтому, если входные элементы уникальны, повторных значений не будет.
Так что, когда я использую itertools.permutation (шаг 4), он содержит много копий.
>>> itertools.permutations(step,4)
('D', 'D', 'R', 'R')
('D', 'R', 'D', 'R')
('D', 'R', 'R', 'D')
('D', 'R', 'D', 'R')
('D', 'R', 'R', 'D')
('D', 'D', 'R', 'R')
('D', 'D', 'R', 'R')
('D', 'R', 'D', 'R')
('D', 'R', 'R', 'D')
('D', 'R', 'D', 'R')
('D', 'R', 'R', 'D')
('R', 'D', 'D', 'R')
('R', 'D', 'R', 'D')
('R', 'D', 'D', 'R')
('R', 'D', 'R', 'D')
('R', 'R', 'D', 'D')
('R', 'R', 'D', 'D')
('R', 'D', 'D', 'R')
('R', 'D', 'R', 'D')
('R', 'D', 'D', 'R')
('R', 'D', 'R', 'D')
('R', 'R', 'D', 'D')
('R', 'R', 'D', 'D')
Я хочу что-то вроде:
('R', 'D', 'R', 'D')
('R', 'D', 'D', 'R')
('D', 'R', 'R', 'D')
('D', 'D', 'R', 'R')
('D', 'R', 'D', 'R')
('R', 'R', 'D', 'D')
Я нашел какой-то ответ, используя set (itertools.permutations (step, 4)) , но поскольку применяется метод set (), метод itertools.permutation () по-прежнему вычисляет все возможности. Есть ли способ избежать этого, или , есть ли встроенная функция, которая может выполнять перестановку без повторений в Python?