python中重复字符的排列

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (187)

并[a,A,B,A]

我想生成这个数字的排列结果的数量必须是4因为重复的字符有人可以帮我在python中编码

提问于
用户回答回答于

运用 itertools.permutations

>>> import itertools
>>> a,b = 1,2
>>> set(itertools.permutations([a,a,b,a]))
{(1, 1, 2, 1), (2, 1, 1, 1), (1, 2, 1, 1), (1, 1, 1, 2)}

或者使用more_itertools.distinct_permutations

>>> import more_itertools
>>> a,b = 1,2
>>> list(more_itertools.distinct_permutations([a,a,b,a]))
[(2, 1, 1, 1), (1, 2, 1, 1), (1, 1, 2, 1), (1, 1, 1, 2)]
用户回答回答于

这实际上可以使用一个名为Sympy的模块轻松实现,该模块有一个用于处理多个集合的模块,例如您描述的模块

>>> from sympy.utilities.iterables import multiset_permutations
>>> list(multiset_permutations([3,3,6,3]))
[[3, 3, 3, 6], [3, 3, 6, 3], [3, 6, 3, 3], [6, 3, 3, 3]]
>>> list(multiset_permutations([4,1,1,1]))
[[1, 1, 1, 4], [1, 1, 4, 1], [1, 4, 1, 1], [4, 1, 1, 1]]

因此,在您的情况下,您可以简单地创建所有多集排列的列表:

list(multiset_permutations([a,a,b,a]))

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励