生成卡片组的所有排列?

时间:2017-04-09 08:02:21

标签: python permutation

我有一个特定顺序的52个元素的卡片组列表

[1,5,10,8,4...]

列表中的每个元素都可以放在5个可用插槽中的一个插槽中:插槽1,2,3,4或5。 如何生成5个插槽的所有可能排列?例如,一个排列是插槽1中的所有52个卡,另一个是插槽1中的第一个卡,插槽2中的第二个卡,依此类推。 我一直在考虑使用itertools的排列功能,但我无法弄清楚如何将它应用于5槽概念。

1 个答案:

答案 0 :(得分:1)

如果我理解正确,你的牌组的一个任务可以看作是一个函数,它将牌组中的每个元素映射到数字1,2,3,4,5。鉴于输入始终相同,它可以表示为52元素的列表,其中每个元素是15之间的数字,它告诉该元素被分配到哪个插槽

itertools的product功能可能会对您有所帮助。你可以称之为:

for x in itertools.product((1,2,3,4,5), repeat=52):
    print(x)

但是,生成的元素数量为5^52=O(10^36)。这是很多元素,很可能你永远不会完成它们的印刷。如果你每秒打印一百万,那么获得所有这些都需要超过十亿亿年。