python - 创建具有重复元素的所有排列,而不重复排列本身
问题描述
我有一个字符串'UUUUUUUUUDDDDDDD'
,它们是 9 U
s 和 7 D
s。
我想生成所有排列,例如:
'UUUUUUUUUDDDDDDD'
'DUUUUUUUUUDDDDDD'
'DUUUUUDUUUDDDDUD'
'DUUDUUDUUUDDDDUU'
换句话说,所有可能的字符串 9 U
s 和 7 D
s
我正在尝试使用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')
生成所有可能性,然后将它们添加到一个集合中以使其唯一不是一个可行的解决方案,因为将有太多的排列存储在内存中。我想一次生成一个,使用它并丢弃它。
解决方案
推荐阅读
- mysql - 修复 VB.NET 错误“连接必须有效且打开”
- ios - 从外部 url 打开已安装的 PWA
- python - Matplotlib figsize 不被尊重
- facebook-ads-api - 我的框架中的 FBAudienceframework 迅速但它给出了最终类异常
- sql-server - SQL Server 用户名和密码
- django - 在 django 中更改 robots.txt
- php - 错误“Yajra \ Pdo \ Oci8 \ Exceptions \ Oci8Exception ORA-24415:用户名丢失或为空。” 使用 Laravel5.6
- spotfire - 直线之间的距离
- c - 形成最小的数
- amazon-web-services - 如何检索 AWS 中正在运行的 Step Functions 的当前状态