打印组合列表会导致MemoryError

时间:2018-07-15 06:18:57

标签: python itertools

我有一个由80个单元格组成的矩阵。我的目标是测试每个可能的组合,其中每个组合的长度为8个单元格。

例如,可能的组合之一是[0、1、2、3、4、5、6、7]

我试图使用以下代码来打印这些组合的每一个,而我得到的只是一个MemoryError:

comb = combinations(range(80), 8)
for i in list(comb):
    print(i)

我的目的是实际使用i(每个组合)并将其设置在我的设备中并验证其功能。印刷品(i)只是用来验证我做得对,并查看其中的一些组合。

是否有更有效的内存方式来执行此类任务?

顺便说一句,我知道我打算测试2.898753715E + 10个组合。

1 个答案:

答案 0 :(得分:2)

您已经知道您的列表无法容纳到内存中,而且您似乎也并不需要所有组合在内存中,所以为什么不简单地删除对list()的调用呢?

for i in comb:
    set_and_test_if_functional(i)

这仍然需要大约一年的时间(假设您可以每毫秒测试一个组合),但是不会引起内存问题。