当我在命令行中执行此操作(过滤和缩减同理)
map( lambda x: x+1, [1,2,3,4,5] )
结果并非列表/集合,而是:
<map object at 0x6ffffe7b630>
如果要获得列表,需要应用list()函数。同样的情况也会发生在使用普通函数替换lambda时...
为什么会出现这种行为?
map( lambda x: x+1, [1,2,3,4,5] )
结果并非列表/集合,而是:
<map object at 0x6ffffe7b630>
如果要获得列表,需要应用list()函数。同样的情况也会发生在使用普通函数替换lambda时...
为什么会出现这种行为?
map()
的情况下,算法与for
循环有很大不同。前者快了约2.5亿倍。对于一个包含5000万行的列表进行map()
测试只需要450纳秒,并且结果立即可用。而在相同数据上运行for
循环则需要1.1分钟。 - Pouriamap
时,它不会循环整个列表并在每个元素上应用lambda,而是等待迭代器被迭代,并在迭代器产生每个元素时将lambda应用于该元素。 - Chad S.