我有一个由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个组合。
答案 0 :(得分:2)
您已经知道您的列表无法容纳到内存中,而且您似乎也并不需要所有组合在内存中,所以为什么不简单地删除对list()
的调用呢?
for i in comb:
set_and_test_if_functional(i)
这仍然需要大约一年的时间(假设您可以每毫秒测试一个组合),但是不会引起内存问题。