如何在python中重复计算排列

时间:2017-10-08 11:35:15

标签: python

如何在重复项目时查找排列数量? 例如,对于字符串aab,我想要以下输出:aabababaa

3 个答案:

答案 0 :(得分:2)

您可以使用标准库itertools模块:

from itertools import permutations


iterable = "aab"
print(set(permutations(iterable, len(iterable))))

通过执行该代码,我得到以下输出:

None@vacuum:~$ python3.6 ./test.py 
{('b', 'a', 'a'), ('a', 'b', 'a'), ('a', 'a', 'b')}

答案 1 :(得分:0)

以下内容应该有效:

import itertools
set(itertools.permutations('aab'))

permutations会产生所有排列,但它会重复输出一些输出,因为它无法区分a1 a2 ba2 a1 b。此处a1a的第一次出现,第二次出现a2。因此,您需要保留唯一元素,set是一种很好的方法,因为构造函数将输入迭代变换为唯一集合。

答案 2 :(得分:0)

  

more-itertools.distinct_permutations(iterable)

     

产生可迭代中元素的连续的不同排列。

     

等同于set(permutations(iterable)),但重复项不是   生成并丢弃。对于较大的输入序列,   更有效率

from more_itertools import distinct_permutations

for p in distinct_permutations('aab'):
    print(''.join(p))

# baa
# aba
# aab

安装:

pip install more-itertools