在python中处理大型列表

问题描述 投票:0回答:1

我有一项数学任务,应该在其中找到一些组合,等等。这没关系,问题是我正在尝试使用itertools模块进行操作,并且在较小的组合(6个位置)上可以正常工作,但是现在我想对大型组合(18个位)执行相同的操作,因此在这里遇到了问题,因为我只有8GB的RAM,并且此列表大约为5GB,并且在我的系统运行时,它消耗了所有RAM,然后程序删除了MemoryError 。所以我的问题是:什么是我正在使用的方法的更好替代方法(以下代码)?

poliedar_kom = list(itertools.combinations_with_replacement(range(0, 13), 18)) poliedar_len = len(poliedar_kom)

因此,当我有此列表及其长度时,程序的其余部分将遍历列表中的每个值,并检查条件是否包含另一个较小列表中的值。正如我已经说过的那样,这是有问题的,因为此列表对于我的PC来说太大了,但是我可能做错了。

注意:我正在使用最新的Python 3.8 64位

摘要:我的列表列表太大,我必须循环检查这些条件的值。

python database list memory itertools
1个回答
0
投票

对于需要多于1e4项的任何应用程序,您应避免使用python列表,因为它们非常占用内存和处理器资源


0
投票

将生成器用于大数据范围,代码的时间和空间复杂度不会随着大数据量的增加而呈指数增加,有关更多详细信息,请参阅链接:

© www.soinside.com 2019 - 2024. All rights reserved.