【发布时间】:2020-05-15 12:56:20
【问题描述】:
我有这个数学任务,我应该在其中找到一些组合等。没关系,问题是我正在尝试使用 itertools 模块来完成它,它在较小的组合上运行良好(6 - 地方),但现在我想对大型组合(18 个位置)做同样的事情,所以在这里我遇到了问题,因为我只有 8GB 的 RAM,而这个列表大约有 5GB,并且随着我的系统运行它消耗所有 RAM,然后程序下降内存错误。所以我的问题是:我正在使用的方法(下面的代码)有什么好的替代方法?
poliedar_kom = list(itertools.combinations_with_replacement(range(0, 13), 18))
poliedar_len = len(poliedar_kom)
所以当我有这个列表并且它的长度时,程序的其余部分将遍历列表中的每个值并检查另一个较小列表中的值的条件。正如我已经说过的那样,这是个问题,因为这个列表对于我的电脑来说太大了,但我可能做错了什么。
注意:我使用的是最新的 Python 3.8 64 位
总结:我的列表太大,我必须循环检查条件值。
编辑:感谢所有答案,我现在必须尝试,如果您对问题有任何新的可能解决方案,请发布。
编辑 2:谢谢大家,你们帮了我很大的忙。我标记了指向 Youtube 视频的答案,因为它让我意识到我的代码已经是生成器。谢谢大家!!!
【问题讨论】:
-
你尝试过使用生成器吗?如果您真的只需要遍历数据,这可能会起作用
-
我现在正在阅读有关生成器的内容,我认为它可能会起作用,因为我设法将该列表保存到 .txt 文件中,并且每一行都是一个值。你能指出我可以看到这个例子的地方吗,因为我以前从未使用过这些。
标签: python database list memory itertools