在Python中,使用
对于字符串
是否有一个函数或模块在生成排列时考虑了重复元素,以便我不必编写自己的函数?
itertools
模块生成列表的所有排列非常简单。我有一个情况,我正在使用的序列只有两个字符(即'1122'
)。我想生成所有唯一的排列。对于字符串
'1122'
,有6个唯一的排列(1122
,1212
,1221
等),但是itertools.permutations
将产生24个项目。只记录唯一的排列很简单,但收集它们所需的时间比必要的多得多,因为会考虑所有720个项目。是否有一个函数或模块在生成排列时考虑了重复元素,以便我不必编写自己的函数?
reverse
是否可以? 这具有O(n)
复杂度,并且在每次迭代上运行的事实可能会使整个算法变得非常缓慢。 - ovgolovinlist()
将此迭代器括起来是不起作用的:list(next_permutation([1, 2]))
会得到[[2, 1], [2, 1]]
。有任何想法为什么会这样? - Nico Schlömer