2024-10-02 00:28:16 发布
网友
map( lambda x: len(x), aLotOfData)
我正在写一些类似于上面的代码,如果我把lambda def放在同一行,它会不会更慢?或者我应该赋给一个变量f,以避免在每次迭代中都进化lambda def,或者python实际上足够聪明地缓存它?在
lambda只计算一次(转换为代码对象),因此不需要将其赋给变量。在
lambda
>>> import dis >>> def func(): ... map( lambda x: len(x), aLotOfData) ... >>> dis.dis(func) 2 0 LOAD_GLOBAL 0 (map) 3 LOAD_CONST 1 (<code object <lambda> at 0x31c3d30, file "<ipython-input-30-27b0b12b0965>", line 2>) 6 MAKE_FUNCTION 0 9 LOAD_GLOBAL 1 (aLotOfData) 12 CALL_FUNCTION 2 15 POP_TOP 16 LOAD_CONST 0 (None) 19 RETURN_VALUE
但是由于map使用lambda的速度很慢,所以应该在这里使用列表理解或生成器表达式(如果需要迭代器)。在
map
或者定义一个更具可读性的完整函数:
def my_func(x): #do something with x return something [my_func(x) for x in aLotOfData]
Which is more preferable to use in Python: lambda functions or nested functions ('def')?
lambda
只计算一次(转换为代码对象),因此不需要将其赋给变量。在但是由于
^{pr2}$map
使用lambda的速度很慢,所以应该在这里使用列表理解或生成器表达式(如果需要迭代器)。在或者定义一个更具可读性的完整函数:
Which is more preferable to use in Python: lambda functions or nested functions ('def')?
相关问题 更多 >
编程相关推荐