【发布时间】:2020-07-14 17:18:26
【问题描述】:
我在看这个问题:
cons(a, b) 构造一个对,car(pair) 和 cdr(pair) 返回该对的第一个和最后一个元素。例如,car(cons(3, 4)) 返回 3,cdr(cons(3, 4)) 返回 4。
鉴于这种缺点的实现:
def cons(a, b):
def pair(f):
return f(a,b)
return pair
实现 car 和 cdr。
我认出了 lambda 表达式,但我仍然不确定它是如何工作的。答案如下:
def car(f):
z = lambda x, y: x
return f(z)
def cdr(f):
z = lambda x, y: y
return f(z)
如果 f 是函数对象,是不是将 z 传递给 f 调用 lambda f : f(a,b),其中 z 有 2 个参数,而另一个 lambda 只有 1 个参数?
这个解决方案是如何工作的?
【问题讨论】:
标签: python lambda function-object