0

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

编辑

让我们假设 data[] 有大约 10000000 个列表。我需要使用每个列表的第 0 个元素对数据进行排序

所以我正在遍历数据如下

for m in data:

和我正在使用的排序

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

1 回答 1

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)
于 2013-01-25T06:00:08.080 回答