Python中的常量lambda函数
我该如何在Python中定义一个常量的lambda函数呢?
我需要这个函数来计算一些表达式,比如
lam (array[1,2,3,4,5])
目前我使用的是
lam = lambda t: 1 + t*0
这样可以工作,但这样做会不会太浪费资源了呢?
4 个回答
3
那这样做怎么样:
[1] * len(array)
6
通常情况下,我们会用下划线(_)来表示那些没有用到的参数。
lam = lambda _: 1
7
如果你只是想要一个函数,不管传入什么参数,它都返回相同的结果,那完全没问题!你并不需要使用任何参数。
在Python中,lambda
是一个没有名字的函数(还有一些其他不相关的限制)。
如果你打算把这个lambda表达式的返回值直接赋给一个变量,那其实就是给这个函数起了个名字。这样做没必要,直接定义一个普通的函数就好。你应该在需要把一个函数传给另一个函数时使用lambda,特别是当你想用的那个函数很简单,甚至不值得起个名字的时候(比如它总是返回1
)。Python有一些这样的“高阶函数”(可以接收其他函数作为参数的函数),比如map
、filter
和reduce
,它们都是内置的。
#never!
always_return_one = lambda ignored_argument: 1
#OK: functions with names are def'ed not lambda'd
def always_return_one(ignored_argument):
return 1
#Also OK: pass the lambda to another function as soon as you spell it.
modified_list = some_highorder_function(lambda ignored: 1, [1, 2, 3, 4, 5])
在Python中,一些常用的高阶函数有特殊的语法。比如在上面的例子中,如果函数是map
,你可以像这样使用列表推导式:
modified_list = [1 for ignored in [1, 2, 3, 4, 5]]
这样读起来更简单,而且速度也更快!