Python 大排列

问题描述 投票:0回答:2

我正在处理一个包含 10-100 个对象的列表。每个对象都分配有特定的变量,例如速度、成本等。这样做的目的是从排列中的所有列表中找到特定列表。

我遇到的问题是生成 10 个列表的排列,大约需要 30 分钟。当我将其增加到 12、13...或更多时,列表的数量变得如此之多,以致于遍历每个列表需要花费大量时间,而毫无意义。我目前拥有的是以下内容:

list = [1,2,3,4,5,6,7,8,9,10]

for item in itertools.permutations(list):
   print(item)

这很有效,因为它不会在 RAM 中存储大量的排列列表,但它确实需要很长时间。这是在黑暗中拍摄的,但是有什么方法可以加快循环排列中每个列表的过程吗?

python permutation
2个回答
1
投票

停止打印输出。如果你这样做的话,花费的时间会少很多。


0
投票

我在 itertools.permutations 中遇到了同样的问题

据我了解,如果您在 for 循环中迭代 itertools.permutations,就像您在此处所示的那样。它基本上是逐步生成 N 个元素的排列。所以,有N个!总共的排列。大于 12 的数字会变得非常慢,因为无论算法有多快,它仍然必须对每个排列进行运算。 (12!= 479001600 次操作)

如果您不需要所有排列,而只想要某个排列或以某种方式。检查找到第n个排列而不计算其他排列

© www.soinside.com 2019 - 2024. All rights reserved.