并[a,A,B,A]
我想生成这个数字的排列结果的数量必须是4因为重复的字符有人可以帮我在python中编码
发布于 2018-09-17 09:29:25
这实际上可以使用一个名为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]))
发布于 2018-09-17 09:46:06
运用 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.distinc
t_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)]
https://stackoverflow.com/questions/-100002636
复制相似问题