Lambda
匿名函數
Syntax
Syntax
lambda arguments : expression
lambda arguments : expression
The expression is executed and the result is returned:
Example
Example
Add 10 to argument a, and return the result:
x = lambda a : a + 10
print(x(5))
Output
Output
15
Lambda語法:arg1,arg2...:expression
Lambda語法:arg1,arg2...:expression
※可以在運算式內使用遞迴呼叫的神奇運算式※
取絕對值
取絕對值
abs(n) #abs是內含函式
abs的Lambda:
abs的Lambda:
lm_abs = lambda x: x if x>0 else -x
回傳較大值
回傳較大值
max(m,n) #max是內含函式
max的Lambda運算式
max的Lambda運算式
lm_max = lambda m,n:m if m>n else n
lm_max(10,3) #回傳值 10
GCD輾轉相除
GCD輾轉相除
def gcd(x,y):
while y!=0:
r=x%y ; x=y ; y=r
return x
GCD的Lambda運算式:
GCD的Lambda運算式:
gcd = lambda x,y : (gcd(y,x%y)) if x%y else y
第n項費氏數列 Fibonacii
第n項費氏數列 Fibonacii
def fib(n):
if n<=2:
return 1
else:
return (fib(n-1)+fib(n-2))
費氏數列的Lambda運算式:
費氏數列的Lambda運算式:
fib = lambda x:(fib(x-1)+fib(x-2)) if x>2 else 1
判斷是否為2的次方
判斷是否為2的次方
def is_pow_of_2(n):
if n>0 and (n&(n-1))==0:
return 1
else:
return 0
2次方的Lambda運算式:
2次方的Lambda運算式:
pow2 = lambda x:1 if x>0 and (x&(x-1))==0 else 0