我有一个字符串。我想通过更改其中字符的顺序从该字符串生成所有排列。例如,说:
x='stack'
我想要的是这样的列表,
l=['stack','satck','sackt'.......]
目前我正在迭代字符串的列表转换,随机选择 2 个字母并将它们转置以形成一个新字符串,并将其添加到 l 的设置转换中。根据字符串的长度,我正在计算可能的排列数并继续迭代,直到设置大小达到限制。必须有更好的方法来做到这一点。
原文由 Nihar Sarangi 发布,翻译遵循 CC BY-SA 4.0 许可协议
itertools 模块有一个有用的方法,称为 permutations()。 文件 说:
不过,您必须将排列后的字母作为字符串加入。
如果您发现自己被重复项困扰,请尝试将您的数据放入一个没有重复项的结构中,例如
set
:感谢@pst 指出这不是我们传统上认为的类型转换,而是对
set()
构造函数的调用。