Python map/filter/reduce with function or anonymous function



当我在命令行执行此操作时(过滤器和减少相同)

map( lambda x: x+1, [1,2,3,4,5] )

而不是结果的列表/集合...我得到了

<map object at 0x6ffffe7b630>

要获取列表,我必须应用 list() 函数如果我使用普通的旧函数来替换 lambda,也会发生同样的情况......

为什么会有这种行为?

因为许多迭代函数使用"惰性"求值。也就是说,它们不会立即应用列表的所有元素。相反,他们使用协程在迭代"map 对象"时一次应用一个函数。

当某些(但不是全部)项将被迭代时,或者可能不需要一次确定所有项时,这是一项性能功能。仅在需要时应用 lambda。以前版本的 python 没有这种优化,而是在调用map后将 lambda 应用于所有内容。

函数map不返回列表,而是返回迭代器

返回一个迭代器,该迭代器将函数应用于可迭代对象的每个项,从而生成结果。

地图的文档包含更多信息。

相关内容

最新更新