计算排列数的最快方法是什么?我有以下问题:
首先我有这个:
ncombos = itertools.combinations_with_replacement(['a1', 'a2', 'a3'], years*n)
('a1', 'a1', 'a1')
('a1', 'a1', 'a2')
('a1', 'a1', 'a3')
('a1', 'a2', 'a2')
.... etc.....
('a3', 'a3', 'a3')
目的是遍历每一个并计算每个排列的数量,并用这些值构造一个数组。我使用以下方法实现了这个:
nodes = np.ones(len(leafs)); i=0 #This will store the number of permutations
for j in ncombos:
nodes[i] =len(list(set(itertools.permutations(np.asanyarray(j), n))))
i = i+1
np.asanyarray(j) 将 ('a1','a1','a1') 转换为正式的 ['a1','a1', 'a1'] ,这是 permutations() 工作所需要的。set 删除相同的排列。list 列出了这个。len 计算我可以用 a1、a1、a1 进行多少排列。
所以基本上我想要的只是计算排列的数量......但是我的代码非常好!减缓 !谢谢!