代码之家  ›  专栏  ›  技术社区  ›  Moshe S.

打印组合列表会导致MemoryRor[重复]

  •  -1
  • Moshe S.  · 技术社区  · 6 年前

    这个问题已经有了答案:

    我有一个由80个细胞组成的矩阵。我的目标是测试每个可能的组合,每个组合有8个细胞长。

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

    我试着用下面的代码来打印这些组合,我得到的只是一个记忆错误:

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

    我的目的是把我(每一个组合)放在我的设备中,并验证它的功能。打印(i)只是为了验证我做得对,并查看一些组合。

    有没有一种更节省内存的方法来完成这种任务?

    顺便说一下,我知道有2.898753715e+10个组合,我计划测试。

    1 回复  |  直到 6 年前
        1
  •  2
  •   Tim Pietzcker    6 年前

    你已经知道你的列表无法放入内存,而且你似乎并不需要内存中的所有组合,所以为什么不简单地删除对 list() 是吗?

    for i in comb:
        set_and_test_if_functional(i)
    

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