【发布时间】:2013-05-17 12:21:44
【问题描述】:
我正在编写一个 python 脚本,它应该接受一个函数列表,写成 lambda 表达式,并返回所有函数的组合,但是,我在脚本中有一个箭头,可能是因为我的方式使用 lambda 表达式。似乎即使在我给返回的函数一个数字值之后,我也得到了一个函数,而不是一个数字。这是我写的:
def compose1(lst):
if lst == []:
return lambda x: x
else:
temp = (lst[len(lst)-1])
for i in range(len(lst)-2,-1,-1):
temp = lambda x: lst[i](temp)
return lambda x: temp
这是我写的函数的一个测试,它说我有一个错误。
f = compose1([lambda x: x+1, lambda x: x*2, lambda x: x-1])
for x in range(10):
assert (f(x) == 1 + (x - 1) * 2)
f = compose1([lambda x: x-1, lambda x: x*2, lambda x: x+1])
for x in range(10):
assert (f(x) == (x + 1) * 2) - 1
我会在这个问题上有所帮助.. 谢谢:)
【问题讨论】:
-
您的第一个
assert在表达式周围有一些虚假的括号。如果您删除了它们,那么您可能还会注意到第二个assert中的括号放错了位置。