【发布时间】:2018-03-22 18:28:28
【问题描述】:
在 Python 3+ 中,map() 函数返回一个映射对象 (<map object at 0x01E7E150>) 而不是列表,当我试图找出原因时,一些帖子(如 this)表明它有助于更好的内存管理和性能。
由于我是 Python 新手,所以我真的无法完全理解“如何”它可以帮助更好的内存管理和性能。我能想到的最好的是-假设如果map()返回了列表对象而不是返回地图对象,那么我不需要像list(map(.....))那样将地图对象转换为列表,但是由于地图对象在接下来的时候被返回了步骤我必须调用list() 函数。
我知道一个参数可能是您可以直接循环遍历 map 对象,但那时还必须分配内存并且必须评估传递给 map() 的函数,那么如果我这样做有什么不同是现在还是一步之后?
更新:建议这可能与this 重复,但我不认为该答案是全面回答有关“内存管理”和“性能”优势的问题。
【问题讨论】:
-
粗略地说,如果你遍历 Py3
map对象,那么你只在内存中保存可迭代的每一项,而不是整个可迭代(如list);有关其他详细信息/差异,请参阅我建议的欺骗 -
@Chris_Rands 是的,我确实看到了你的欺骗建议,但我不认为这个答案是全面回答有关“内存管理”和“性能”优势的问题。
-
@hagrawal 请同时阅读其他答案。
-
我不明白你不明白的地方,你了解迭代器/生成器在 Python 中一般是如何工作的吗?
标签: python