我有一个特定顺序的52个元素的卡片组列表
[1,5,10,8,4...]
列表中的每个元素都可以放在5个可用插槽中的一个插槽中:插槽1,2,3,4或5。 如何生成5个插槽的所有可能排列?例如,一个排列是插槽1中的所有52个卡,另一个是插槽1中的第一个卡,插槽2中的第二个卡,依此类推。 我一直在考虑使用itertools的排列功能,但我无法弄清楚如何将它应用于5槽概念。
答案 0 :(得分:1)
如果我理解正确,你的牌组的一个任务可以看作是一个函数,它将牌组中的每个元素映射到数字1,2,3,4,5
。鉴于输入始终相同,它可以表示为52
元素的列表,其中每个元素是1
和5
之间的数字,它告诉该元素被分配到哪个插槽
itertools的product
功能可能会对您有所帮助。你可以称之为:
for x in itertools.product((1,2,3,4,5), repeat=52):
print(x)
但是,生成的元素数量为5^52=O(10^36)
。这是很多元素,很可能你永远不会完成它们的印刷。如果你每秒打印一百万,那么获得所有这些都需要超过十亿亿年。