为什么在Python 3.x中的循环内使用list返回内存错误?

问题描述

我得到了以下代码

var = []
for i in range(0,len(code_list)-11):
        
        sorted_list = sorted(code_list[i:i+10]) 
        minmax_list = list(range(min(sorted_list),max(sorted_list)+1))
        
        if (sorted_list == minmax_list):
            var = var+lista_ordenada

code_list太大时,将返回一个内存错误。 但是,当替换以下内容时:

var = []
for i in range(0,len(code_list)-11):
        
        sorted_list = sorted(code_list[i:i+10]) 
        minmax_list = np.arange(min(sorted_list),max(sorted_list)+1,1).tolist()
        
        if (sorted_list == minmax_list):
            var = var+lista_ordenada

例程成功结束。有人知道原因吗?

谢谢!

解决方法

tolist()将所有数据转换为python标准库类型。它还知道它是一个numpy数组,并且可以访问高度优化的支持数组。

list仅使用迭代器添加所有元素,因此速度较慢且占用大量内存。