今天,我为初筛写了一个简短的脚本,我正在寻找改进它。我对python和一般编程相当陌生,所以我想知道:在涉及大量数字列表的程序中减少内存使用的好方法是什么?这是我的示例脚本:
def ES(n):
A = list(range(2, n+1))
for i in range(2, n+1):
for k in range(2, (n+i)//i):
A[i*k-2] = str(i*k)
A = [x for x in A if isinstance(x, int)]
return A
该脚本将列表 A 中的所有组合转换为字符串,然后返回剩余整数的列表,它们都是素数,但它运行 A[i*k-2] = str(i*k) 三次数字 12,因为它经历了 2 的所有倍数,然后是 3,然后又是 6。发生这样的事情时,在存储如此大的列表时,我很快就撞到了一堵砖墙,它崩溃了。任何建议将不胜感激!提前致谢。
编辑:我不知道这是否有所不同,但我使用的是 Python 3.3