如何在python中定义一个常量lambda函数?
我需要它来评估像
这样的表达式lam (array[1,2,3,4,5])
现在我用
lam = lambda t: 1 + t*0
它有效但是太浪费了吗?
答案 0 :(得分:5)
如果你只想拥有一个返回相同内容的函数,无论它调用什么参数,那就是A-OK!您没有任何义务使用您的任何论据。
在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]]
它读起来更容易一致更快!
答案 1 :(得分:3)
将_用于未使用的参数
是常规的lam = lambda _: 1
答案 2 :(得分:2)
如果您希望lambda函数忽略其参数并始终返回1
,则只需不要使用参数:
lam = lambda t: 1
答案 3 :(得分:1)
如何:
[1] * len(array)