2016-01-21 78 views
1

我想做32个项目的排列,我会通过每个排列变成一个函数来对排列中的每个项目做一些计算。Python更快的方法做排列

我让它运行了大约6个小时,我取消了它。有更快的方法吗?

+6

没有人。 32!是一个庞大的数字 – JuniorCompressor

+2

无论您使用短名还是长名,单独命名地球上的每一粒沙子都需要很长时间。这里的原则相同。 – Kevin

+0

'32! = 2.6313084e + 35',你可以估计每个函数应该如何快速工作 –

回答

1

假设您可以每秒向您的函数传递10亿个置换。 (N.B.你不能)。

现在假设你离开它运行的宇宙的年龄:

13,700,000,000 (years) times 31,536,000 (seconds in a year) 

(1000000000 * 31536000 * 13700000000)/32! = 0.000000002 

您只能通过你的计算方式0.0000002%。

我建议现在停下来,研究你为什么需要这样做,以及你是否可以用不同的方式解决你的问题。 (如果只是为了好玩,那么也许选择一个更小的数字)。

+1

我已经阻止了它。事实证明,我并不需要'排列组合' 在我的结果中,我预计BAC = CBA。但我想确保32件物品中的每一件都与每一件物品互动,所以我代之以 '长度在范围内(2,len(物品)): \t对于物品组合(物品,长度): \t \t calc_rate(item)' – iKey