【发布时间】:2014-04-04 13:26:09
【问题描述】:
在 Python 3 中,许多返回列表的函数(现在是类)现在都返回可迭代对象,最流行的例子是 range。在这种情况下,在 Python 3 中将 range 设置为可迭代的,以提高性能和内存效率(因为您不再需要构建列表)。
其他“新”迭代是map、enumerate、zip 和字典操作的输出dict.keys()、dict.values() 和dict.items()。 (可能还有更多,但我不知道)。
其中一些(enumerate 和 map)通过将它们转换为可迭代对象,可能会提高内存效率。在 Python 2.7 中,其他人只是简单地创建了已经在内存中的对象列表,因此它们本来可以节省内存。
为什么然后将它们转换为每次要对它们进行排序等时都必须转换为列表的可迭代对象?
【问题讨论】:
-
enumerate()在 Python 2 中已经是一个可迭代对象了。 -
创建列表对象的内存效率不高;
list对象是一个新对象。
标签: python python-3.x dictionary iterable memory-efficient