复制项的唯一排列

时间:2016-11-13 02:43:53

标签: python python-2.7 statistics permutation itertools

我正在尝试使用Python-2.7来使用"随机化分布"但是找不到合适的itertool来完成这项工作。

想象一下,我有列表['A', 'B', 'B']

使用itertools.permuations()会给我以下内容:

('A', 'B', 'B')
('A', 'B', 'B')
('B', 'A', 'B')
('B', 'B', 'A')
('B', 'A', 'B')
('B', 'B', 'A')

当我真正想要的是没有重复的排列时:

('A', 'B', 'B')
('B', 'A', 'B')
('B', 'B', 'A')

当然我可以过滤,但在真实世界大小的数据集中,你会得到第一种方法的组合爆炸,而第二种方法则没有。

fact(len(A) + len(B))fact(len(A) + len(B)) / (fact(len(A) * fact(len(B)))

如果len(A) = 6len(B) = 5399,916,800462

有这个工具吗?

旁注:如果有人能够提出更具描述性的标题,以便这个问题更容易被其他人搜索,我愿意接受建议。请发表评论。

0 个答案:

没有答案