使用重复的元素创建所有排列,而无需重复排列本身

时间:2018-07-18 18:27:49

标签: python unique permutation repeat

我有一个字符串'UUUUUUUUUDDDDDDD',分别是9个U和7个D

我想生成所有排列,例如:

'UUUUUUUUUDDDDDDD'
'DUUUUUUUUUDDDDDD'
'DUUUUUDUUUDDDDUD'
'DUUDUUDUUUDDDDUU'

换句话说,所有可能的字符串包含9个U和7个D

我正在尝试使用itertools.permutations(),但是该函数将每个U和每个D视为一个不同的元素,所以我得到了重复的排列。

在下面的示例中,我将使用较小的字符串UUD来演示itertools.permutations的问题:

for g in itertools.permutations('UUD'):
    print(g)

我明白了

('U', 'U', 'D')
('U', 'D', 'U')
('U', 'U', 'D')
('U', 'D', 'U')
('D', 'U', 'U')
('D', 'U', 'U')

我想要

('U', 'U', 'D')
('U', 'D', 'U')
('D', 'U', 'U')

生成所有可能性,然后将它们添加到集合中以使其唯一是一种不可行的解决方案,因为将有太多的排列存储在内存中。我想一次生成一个,然后使用并将其丢弃。

0 个答案:

没有答案