Python lambda:减少输入和调用

时间:2018-08-11 07:59:02

标签: python lambda python-3.6

我编写了以下代码,以根据三角形的三个边 a,b c 来查找三角形的面积:

s = lambda a, b, c : (a + b + c)/2
area_tri = lambda a, b, c : (s(a,b,c) * (s(a,b,c)-a) * (s(a,b,c)-b) * \
   (s(a,b,c)-c)) ** 0.5
area_tri(1, 2, 3)

输出:7.3484692283495345

我有两个问题。首先,如何减少在 area_tri 的lambda函数中重复输入 s(a,b,c)?其次,与第一个问题相关联,如何将 area_tri 中的 lambda s 的调用次数减少?

1 个答案:

答案 0 :(得分:1)

有一种方法:

area_tri = lambda a, b, c: (lambda x=s(a,b,c): (x * (x-a) * (x-b) * (x*c)) ** 0.5)()

没有lambda,但在一行中可能会短一些:

def area_tri(a, b, c): x = s(a,b,c); return (x * (x-a) * (x-b) * (x*c)) ** 0.5

但是,除非您打高尔夫球,否则应正确设置其格式:

def area_tri(a, b, c):
    x = s(a,b,c)
    return (x * (x-a) * (x-b) * (x*c)) ** 0.5