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