2013-10-23 128 views
-2

我在python2.7中使用itertools。我想找到所有的組合(沒有重複)。我有長度爲30的列表可迭代。雖然我將可迭代對象保存爲列表,但它掛起或需要很長時間。是否有人可以幫助我這個..Itertools需要很長時間才能運行

#!usr/bin/python 
import itertools 
a = range(30) 
list1 = [] 
for i in range(30): 
    list1 = list(itertools.combinations(a,i)) 
+0

你得到2 ** 30個組合,那不會很快。 – alko

+0

是啊alko所以有沒有其他的選擇? – nmt

+0

你在用什麼名單? –

回答

4

什麼你想在這裏做的是創造了一系列的元組的列表是總的非常大量的元素 - 更具體地說,2 ** 30 = 1,073,741,824元組,每個元組平均包含15個整數。這是16,106,127,360(一百六十億)整數。即使你有足夠的記憶來存放它們,它顯然也需要很長時間。

您有可能從錯誤的方向來解決問題(請參閱the XY problem)。如果您發佈了一個新問題來解釋您實際嘗試解決的問題,那麼有人可能會提供幫助,但現在您的問題歸結爲「爲什麼要嘗試執行不合理的大量工作採取不合理的大量時間?「,這是沒有人能夠幫助你的。

相關問題