是否可以用正常功能替换任何lambda函数?
e.g. lst1 = [lambda x:x*i for i in range(5)]
lst2 = [j(2) for j in lst1]
我们可以使用普通函数代替lambda吗?
如果有可能,请告诉我们如何做同样的事情。
谢谢!
答案 0 :(得分:1)
是的 - lambda实际上是" make function&#34 ;;你需要给它一个名字
lst1 = [lambda x:x*i for i in range(5)]
def replace_lambda(x):
return x * x
lst2 = [replace_lambda for i in range(5)]
print lst1
print lst2
for idx, func in enumerate(lst1):
print func(idx)
for idx, func in enumerate(lst2):
print func(idx)
结果:
[<function <lambda>>, <function <lambda>>, <function <lambda>>, <function <lambda>>, <function <lambda>>]
[<function replace_lambda>, <function replace_lambda>, <function replace_lambda>, <function replace_lambda>, <function replace_lambda>]
0
1
4
9
16
0
1
4
9
16
答案 1 :(得分:1)
是的,您可以使用functools.partial
:
from functools import partial
def fun(x, i):
return x * i
lst1 = [partial(fun, i=i) for i in range(5)]
lst2 = [j(2) for j in lst1]