在scipy.splev中我找到了这段代码:
def splev( x, tck, int der=0, int ext=0):
t,c,k = tck
try:
c[0][0]
parametric = True
except:
parametric = False
if parametric:
return list(map(lambda c, x=x, t=t, k=k, der=der: splev(x, [t,c,k], der, ext), c ))
else:
.
.
.
return y.reshape(shape)
我无法理解lambda,请赐教。
答案 0 :(得分:0)
lambdas
只是未命名的函数。你可以这样写:
def splev( x, tck, int der=0, int ext=0):
t,c,k = tck
def otherfxn(c, x=x, t=t, k=k, der=der):
return splev(x, [t,c,k], der, ext)
try:
c[0][0]
parametric = True
except:
parametric = False
if parametric:
return list(map(otherfxn, c))
else:
.
.
.
return y.reshape(shape)
答案 1 :(得分:0)
这里的lambda函数:
lambda c, x=x, t=t, k=k, der=der: splev(x, [t,c,k], der, ext)
与:
相同def anonymous_lambda_function(c, x=x, t=t, k=k, der=der):
return splev(x, [t,c,k], der, ext)
和map将此函数映射到可迭代的元素c
。
{2}中的list(map(...))
是多余的,但它在Python 3中是必需的,因此它保留了代码的向前兼容性。