将 python 代码优化为一个返回语句



我想出了如何完成某项任务,但它需要我创建和定义两个完全独立的函数。我只想拥有那个原始函数和一个返回语句,但我不知道该怎么做。

我有什么:

def fp_golden_ratio_avgdamp(): 
    return fp(avgdamp(lambda x: 1 + 1/x), 1.0)
def avgdamp(f):
    return lambda x: avg(float(x), f(x))
def avg(x, y):
    return (x + y) / 2.0

当您调用fp_golden_ratio_avgdamp()打印时:

(25, 1.6180339887498754)

fp函数是 100% 工作的东西,它接受lambda x: 1 + 1/x和 1.0 的设置值作为某个错误点,它打印

(32, 1.6180339887499087)

因此,我尝试传递给该 fp 函数的是首先通过其他两个函数的内容。

我对此的尝试是:

def fp_golden_ratio_avgdamp():
    return fp( lambda x:( ((float(1 + 1/x) + (1 + 1/x)) / 2.0) ) , 1.0)

但这导致了与我要做的同样的事情

return fp(lambda x: 1 + 1/x, 1.0)

哪个打印这个:

(32, 1.6180339887499087)

所以总结一下我的问题:我想摆脱avgdampavg功能,只是将其优化为单行。

def fp_golden_ratio_avgdamp(): 
    return fp( '''do something with this (lambda x: 1 + 1/x) that is the same computation of the avgdamp and avg functions''', 1.0)

有人可以帮助我吗?

我正在逐步完成此操作:

def avgdamp(f):
    return lambda x: avg(float(x), f(x))
def avg(x, y):
    return (x + y) / 2.0

这可以很容易地放入一个功能中:

def avgdamp(f):
    return lambda x: (float(x) + f(x)) / 2.0

现在这应该与fp_golden_ratio_avgdamp相结合:

def fp_golden_ratio_avgdamp(): 
    return fp(avgdamp(lambda x: 1 + 1/x), 1.0)

所以avgdamp得到一个参数,它是一个函数,它应用于第二个值,所以我们需要在那里应用原始函数:

def fp_golden_ratio_avgdamp(): 
    return fp((lambda x: (float(x) + 1 + 1/x) / 2.0), 1.0)

请注意,您对两个值都应用了1+1/x函数:

return fp( lambda x:( ((float(1 + 1/x) + (1 + 1/x)) / 2.0) ) , 1.0)

这是一个问题,因为((float(1 + 1/x) + (1 + 1/x)) = 2 * (1 + 1 / x)(如果x是浮点数),那么平均值很简单:(1+1/x) .

最新更新