使用Python和Sympy以可预测的顺序生成唯一排列

时间:2019-06-04 15:24:26

标签: python sympy

我在python中有一个元素列表。在最后的代码中,列表的长度将是可变的,列表中的元素会更长,但是我可以用三个虚拟元素来演示我的问题。

基本上,对于任何长度为n的列表,将有n-1个相同的元素和1个唯一的元素。

因此,在以下三个元素的示例中:

test = ['b', 'a', 'a']

对于3之类的小情况,我可以通过肉眼确认元素的顺序,我一直在使用Sympy模块中的函数,如下所示:

permutations = list(multiset_permutations(test))

但是,一旦案例过大,我不确定顺序是否可以预测。而且,检查official documentations并不能很好地为我解决问题。

是否有一种方法可以以可预测的顺序生成这些排列,例如,我可以知道:

permutations[0] = ['b', 'a', 'a']
permutations[1] = ['a', 'b', 'a']
permutations[2] = ['a', 'a', 'b']

感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:0)

在由multiset_permutations生成排列之前,对元素进行排序。您的结果将取决于输入项的顺序。