【发布时间】:2015-08-25 23:01:58
【问题描述】:
免责声明:这个问题是关于我的,希望其他人更好地理解 Python。我知道,我的问题可以通过不止一行轻松解决。
假设我有两个函数 f(x), g(x,y),这样我就可以计算元组 ( f(x), g(x,f(x)) ) 作为 x 的函数。 我想通过这两个键对列表 X 进行排序,但是计算 f(x) 很昂贵,所以我只想对每个 x 执行一次。我目前的解决方案是:
X_s = sorted( X , key = lambda x: (lambda y: ( y , g(x,y) ) )( f(x) ) )
我可以在不使用两个 lambda 函数的情况下达到同样的效果吗?
【问题讨论】:
-
我已经尝试过多次回答这个问题,但最终还是让自己感到困惑。只用一个 lambda 似乎不可能做你想做的事。 Python 没有任何记忆功能,就像 Haskell 一样,所以你需要一个 lambda 来计算 f,另一个来计算 h(x) = (f(x), g(x, f(x))
-
这正是我的想法。感谢您的光荣尝试。
-
你还是应该接受答案
-
@BlueTrin:我会的,但在截止日期前不久这样做并没有错...