Lambda

匿名函數

Syntax

lambda arguments : expression

The expression is executed and the result is returned:

Example

Add 10 to argument a, and return the result:

x = lambda a : a + 10

print(x(5))

Output

15

Lambda語法:arg1,arg2...:expression

※可以在運算式內使用遞迴呼叫的神奇運算式※

取絕對值

abs(n) #abs是內含函式

abs的Lambda:

lm_abs = lambda x: x if x>0 else -x


回傳較大值

max(m,n) #max是內含函式

max的Lambda運算式

lm_max = lambda m,n:m if m>n else n

lm_max(10,3) #回傳值 10


GCD輾轉相除

def gcd(x,y):

while y!=0:

r=x%y ; x=y ; y=r

return x

GCD的Lambda運算式:

gcd = lambda x,y : (gcd(y,x%y)) if x%y else y


第n項費氏數列 Fibonacii

def fib(n):

if n<=2:

return 1

else:

return (fib(n-1)+fib(n-2))

費氏數列的Lambda運算式:

fib = lambda x:(fib(x-1)+fib(x-2)) if x>2 else 1


判斷是否為2的次方

def is_pow_of_2(n):

if n>0 and (n&(n-1))==0:

return 1

else:

return 0

2次方的Lambda運算式:

pow2 = lambda x:1 if x>0 and (x&(x-1))==0 else 0