【问题标题】:What is the best way to iterate through a long list of lists in python在python中遍历一长串列表的最佳方法是什么
【发布时间】:2013-01-09 01:59:53
【问题描述】:

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

编辑

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

所以我按如下方式遍历数据

for m in data:

为了排序,我正在使用

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

【问题讨论】:

标签: python sorting memory memory-management


【解决方案1】:

不知道你的排序标准是什么,我不能说太多。

我能想到的最节省内存的迭代方式是使用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)

【讨论】:

  • 是的,这可能是迭代内部列表项的最佳方式。我认为这是一个重要的区别,因为 OP 实际上可能希望在迭代期间也有列表(尽管我希望他不想要那个)。
  • 实际上,我需要在处理列表中的单个元素时访问列表中的一些 previos 和 next 值。
猜你喜欢
  • 1970-01-01
  • 2011-04-24
  • 1970-01-01
  • 1970-01-01
  • 2012-03-04
  • 2012-07-16
  • 2013-05-13
  • 1970-01-01
  • 2020-06-14
相关资源
最近更新 更多