在python中将lambda替换为普通函数

时间:2016-04-28 09:25:34

标签: python python-2.7 lambda

是否可以用正常功能替换任何lambda函数?

 e.g. lst1 = [lambda x:x*i for i in range(5)]
      lst2 = [j(2) for j in lst1]

我们可以使用普通函数代替lambda吗?

如果有可能,请告诉我们如何做同样的事情。

谢谢!

2 个答案:

答案 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]