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