Python 3.x Python:使用其他HOF定义高阶函数(HOF)
我正在准备期中考试,考试形式中有固定的QN。 高阶函数(HOF)只是一个广义函数,它吸收了其他函数以变得更具体。以下是两个高阶函数Python 3.x Python:使用其他HOF定义高阶函数(HOF),python-3.x,higher-order-functions,Python 3.x,Higher Order Functions,我正在准备期中考试,考试形式中有固定的QN。 高阶函数(HOF)只是一个广义函数,它吸收了其他函数以变得更具体。以下是两个高阶函数 def tail(f, a, n): if n == 0: return a else: return tail(f, f(n, a), n-1) def fold(op, f, n): if n==0: return f(0) else: return op(f(n)
def tail(f, a, n):
if n == 0:
return a
else:
return tail(f, f(n, a), n-1)
def fold(op, f, n):
if n==0:
return f(0)
else:
return op(f(n), fold(op, f, n-1))
我的问题是,是否可以根据折叠(如下格式所示)来定义尾部(如上所示)。如果可能的话,有人能告诉我T1,T2,T3的表达式是什么吗?如果不可能,请解释原因
测试用例:元组反转
def test(seq,f, a, n):
print(tail(f, a, n)) #test original func
print(tail2(f, a, n)) #test invented func
x=(1,2,3,4,5)
print(test(x,lambda n,a: a+(x[n-1],),(),len(x)))
def tail2(f, a, n):
return fold(lambda n,a: a if n==0 else f(n,a),
lambda n: f(n,a),
n)
def test(seq,f, a, n):
print(tail(f, a, n)) #test original func
print(tail2(f, a, n)) #test invented func
x=(1,2,3,4,5)
print(test(x,lambda n,a: a+(x[n-1],),(),len(x)))