在python中迭代一长串列表的最佳方法是什么

时间:2013-01-25 05:54:21

标签: python sorting memory memory-management

我有一个包含大约10000000行的列表的python列表,每行有8个元素。我注意到迭代这个列表并处理它们非常缓慢。在程序的某个地方,我还需要使用特定的键对列表进行排序。我在具有2GB RAM的系统中使用它。在这样大的列表上进行处理的最佳方法是什么?

修改

让我们假设数据[]有大约10000000个列表。我需要使用每个列表第0个元素

对数据进行排序

所以我按如下方式迭代数据

for m in data:

用于排序我正在使用

data=sorted(data, key=itemgetter(0))

1 个答案:

答案 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)