我有一个包含大约10000000行的列表的python列表,每行有8个元素。我注意到迭代这个列表并处理它们非常缓慢。在程序的某个地方,我还需要使用特定的键对列表进行排序。我在具有2GB RAM的系统中使用它。在这样大的列表上进行处理的最佳方法是什么?
修改
让我们假设数据[]有大约10000000个列表。我需要使用每个列表第0个元素
对数据进行排序所以我按如下方式迭代数据
for m in data:
用于排序我正在使用
data=sorted(data, key=itemgetter(0))
答案 0 :(得分:2)
不知道你的分类标准是什么,我不能说太多。
我能想到的最有效的内存迭代方法是使用itertools.chain
:
for element in itertools.chain.from_iterable(myLongList):
print element
编辑:
sorted
从旧列表中创建一个新列表。使用list.sort
就地执行此操作:
myLongList.sort(key=operator.itemgetter(0))
如果你想迭代每一行中的元素,仍然能够访问任何一方的项目:
for rowInd, row in enumerate(myLongList):
for colInd, element in enumerate(row):
print "myLongList[%d][%d] is %s" %(rowInd, colInd, element)