2013-10-23 100 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)。如果您发布了一个新问题来解释您实际尝试解决的问题,那么有人可能会提供帮助,但现在您的问题归结为“为什么要尝试执行不合理的大量工作采取不合理的大量时间?“,这是没有人能够帮助你的。

相关问题