为什么?我想念什么?我知道map返回一个迭代器,该迭代器应该节省内存,而不是立即保存整个列表。但是我的超重型
该
map函数在程序员术语中通常称为 lazy 。它不会做任何工作,除非它 有 。这在函数式编程中被广泛称为“
惰性评估”
。该
map函数不是立即计算任何值,而是返回所谓的
迭代器 。通过这样做,它委派了计算 返回给您 的值的工作。
迭代器可以使用
next以下方式计算单个值:
>>> arr = [1, 2, 3]>>> it = map(lambda x: print(x), arr)>>> next(it)1>>>
但是,当您将地图迭代器转换为列表时,您将强制地图计算 其所有值 ,从而调用函数:
>>> it = map(lambda x: print(x), arr)>>> list(it)1234[None, None, None, None]>>>
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)