2

我正在从一组数字生成所有组合,然后想要生成这些组合的组合。由于有大量可能的组合,我不断收到内存错误。我查看了以下问题,但没有一个问题真正解决了我的问题:
创建集合的所有组合并耗尽内存
Python itertools.combinations() 内存问题
Python 列表内存错误

我正在使用以下方法生成我的列表:

#generate all combinations of 1 and 0 of size 30
set_1 = itertools.product([0,1], repeat = 30)
#generate all combinations of set 1, of size 5
set_2 = [tuple(c) for c in pulp.allcombinations(set_1, 5)]
for sets in set_2:
    print(sets)

它们在生成 set_2 时发生内存错误。我希望仍然能够迭代 set_2,因为稍后我需要访问这些集合。我曾考虑将这些集合写入 txt 文件,但我想将其保存为最后的手段。

4

1 回答 1

1

set2您可以使用生成器表达式来存储和保存您的内存,而不是使用在您的内存中创建列表的列表推导:

set_2 = (tuple(c) for c in pulp.allcombinations(set_1, 5))

生成器类似于列表推导,除了它们不将值存储在内存中而只是按需生成值。但是它们是一次性迭代器,您不能像列表推导的结果那样再次迭代它们。

于 2015-07-15T14:09:02.330 回答