【发布时间】:2014-03-13 15:32:32
【问题描述】:
我刚刚写了这个函数:
def _apply(mols, fn, *args, **kwargs):
return [fn(m, *args, **kwargs) for m in mols if m ]
我开始思考:
- 可以使用
map重写吗? - 这是否已经在 python 的某个地方实现了?
据我所知,map 不能将参数传递给函数,另一方面,它可能会以某种方式进行优化,并使用一些部分绑定或 lambda,我可以使用 map 重新实现它。会有好处吗?
【问题讨论】:
-
你能以某种方式尝试描述代码的用途吗?
-
@PauloBu - 首先,我更改了示例代码,之前的代码很糟糕。它做了什么(或者我的意图是什么),它将带有 args 和 kwargs 的函数应用于 itarable 的每个项目。
-
请注意,
map仅在与内置函数一起使用时速度很快,因此最好使用 LC。 -
@AshwiniChaudhary 即使
def函数会更快,对吧? -
@thefourtheye 我不这么认为,唯一的区别是带有
lambda的表达式必须先执行额外的步骤,将lambda编译为代码对象。
标签: python algorithm function functional-programming list-comprehension