【发布时间】:2019-09-17 14:21:02
【问题描述】:
我使用的是 Python 3.5.2(用于 MS SQL Server 机器学习服务的版本)。我想要一个 lambda 表达式,它使用 with 这样就不会在元组中重复昂贵的计算。一个最小的例子是
lambda x :
with x**2 as x2, x**3 as x3 :
[ (x2**3)*x3-x3 , x2, (x3-5)**x2 ]
但是,这会返回语法错误。在lambda 表达式中如何使用with 语句?
我来自 Wolfram 语言,可以做到这一点。例如
With[{x2 = #^2, x3 = #^3},
{ (x2^3)*x3-x3 , x2, (x3-5)^x2 }
]&
我收集了这些仅在一小部分代码中需要的微小计算(在另一个函数中)。我想将这些作为 lambda 函数来选择和 apply/map 基于该函数中的特定条件。
【问题讨论】:
-
为什么不使用普通的
def? -
很确定这是不可能的;这不是 lambdas 的设计目的。做一个函数。
-
一个 Lambda 可以只包含一个 表达式,所以这在定义上是不可能的。
-
上下文管理器也不是为此而设计的。
-
@khelwood 我有一组微小的计算,这些计算只需要在一小部分代码中(在另一个函数中)。因此,将这些作为 lambda 函数来选择该函数中的特定条件似乎是合理的。
标签: python python-3.x lambda with-statement