Python中的常量lambda函数

3 投票
4 回答
10022 浏览
提问于 2025-04-17 08:27

我该如何在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有一些这样的“高阶函数”(可以接收其他函数作为参数的函数),比如mapfilterreduce,它们都是内置的。

#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]]

这样读起来更简单,而且速度也更快!

撰写回答